1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=i686 | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC 3; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM 4; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM 5; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY 6; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY 7; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL 8; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL 9; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE 10; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX 11; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2 12; RUN: llc < %s -mtriple=i686-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1 13 14define void @test_f2xm1() optsize { 15; GENERIC-LABEL: test_f2xm1: 16; GENERIC: # %bb.0: 17; GENERIC-NEXT: #APP 18; GENERIC-NEXT: f2xm1 19; GENERIC-NEXT: #NO_APP 20; GENERIC-NEXT: retl 21; 22; ATOM-LABEL: test_f2xm1: 23; ATOM: # %bb.0: 24; ATOM-NEXT: #APP 25; ATOM-NEXT: f2xm1 # sched: [99:49.50] 26; ATOM-NEXT: #NO_APP 27; ATOM-NEXT: retl # sched: [79:39.50] 28; 29; SLM-LABEL: test_f2xm1: 30; SLM: # %bb.0: 31; SLM-NEXT: #APP 32; SLM-NEXT: f2xm1 # sched: [100:1.00] 33; SLM-NEXT: #NO_APP 34; SLM-NEXT: retl # sched: [4:1.00] 35; 36; SANDY-LABEL: test_f2xm1: 37; SANDY: # %bb.0: 38; SANDY-NEXT: #APP 39; SANDY-NEXT: f2xm1 # sched: [100:0.33] 40; SANDY-NEXT: #NO_APP 41; SANDY-NEXT: retl # sched: [6:1.00] 42; 43; HASWELL-LABEL: test_f2xm1: 44; HASWELL: # %bb.0: 45; HASWELL-NEXT: #APP 46; HASWELL-NEXT: f2xm1 # sched: [100:0.25] 47; HASWELL-NEXT: #NO_APP 48; HASWELL-NEXT: retl # sched: [7:1.00] 49; 50; BROADWELL-LABEL: test_f2xm1: 51; BROADWELL: # %bb.0: 52; BROADWELL-NEXT: #APP 53; BROADWELL-NEXT: f2xm1 # sched: [100:0.25] 54; BROADWELL-NEXT: #NO_APP 55; BROADWELL-NEXT: retl # sched: [6:0.50] 56; 57; SKYLAKE-LABEL: test_f2xm1: 58; SKYLAKE: # %bb.0: 59; SKYLAKE-NEXT: #APP 60; SKYLAKE-NEXT: f2xm1 # sched: [100:0.25] 61; SKYLAKE-NEXT: #NO_APP 62; SKYLAKE-NEXT: retl # sched: [6:0.50] 63; 64; SKX-LABEL: test_f2xm1: 65; SKX: # %bb.0: 66; SKX-NEXT: #APP 67; SKX-NEXT: f2xm1 # sched: [100:0.25] 68; SKX-NEXT: #NO_APP 69; SKX-NEXT: retl # sched: [6:0.50] 70; 71; BTVER2-LABEL: test_f2xm1: 72; BTVER2: # %bb.0: 73; BTVER2-NEXT: #APP 74; BTVER2-NEXT: f2xm1 # sched: [100:0.50] 75; BTVER2-NEXT: #NO_APP 76; BTVER2-NEXT: retl # sched: [4:1.00] 77; 78; ZNVER1-LABEL: test_f2xm1: 79; ZNVER1: # %bb.0: 80; ZNVER1-NEXT: #APP 81; ZNVER1-NEXT: f2xm1 # sched: [100:0.25] 82; ZNVER1-NEXT: #NO_APP 83; ZNVER1-NEXT: retl # sched: [1:0.50] 84 tail call void asm sideeffect "f2xm1", ""() nounwind 85 ret void 86} 87 88define void @test_fabs() optsize { 89; GENERIC-LABEL: test_fabs: 90; GENERIC: # %bb.0: 91; GENERIC-NEXT: #APP 92; GENERIC-NEXT: fabs 93; GENERIC-NEXT: #NO_APP 94; GENERIC-NEXT: retl 95; 96; ATOM-LABEL: test_fabs: 97; ATOM: # %bb.0: 98; ATOM-NEXT: #APP 99; ATOM-NEXT: fabs # sched: [1:1.00] 100; ATOM-NEXT: #NO_APP 101; ATOM-NEXT: retl # sched: [79:39.50] 102; 103; SLM-LABEL: test_fabs: 104; SLM: # %bb.0: 105; SLM-NEXT: #APP 106; SLM-NEXT: fabs # sched: [1:0.50] 107; SLM-NEXT: #NO_APP 108; SLM-NEXT: retl # sched: [4:1.00] 109; 110; SANDY-LABEL: test_fabs: 111; SANDY: # %bb.0: 112; SANDY-NEXT: #APP 113; SANDY-NEXT: fabs # sched: [1:1.00] 114; SANDY-NEXT: #NO_APP 115; SANDY-NEXT: retl # sched: [6:1.00] 116; 117; HASWELL-LABEL: test_fabs: 118; HASWELL: # %bb.0: 119; HASWELL-NEXT: #APP 120; HASWELL-NEXT: fabs # sched: [1:1.00] 121; HASWELL-NEXT: #NO_APP 122; HASWELL-NEXT: retl # sched: [7:1.00] 123; 124; BROADWELL-LABEL: test_fabs: 125; BROADWELL: # %bb.0: 126; BROADWELL-NEXT: #APP 127; BROADWELL-NEXT: fabs # sched: [1:1.00] 128; BROADWELL-NEXT: #NO_APP 129; BROADWELL-NEXT: retl # sched: [6:0.50] 130; 131; SKYLAKE-LABEL: test_fabs: 132; SKYLAKE: # %bb.0: 133; SKYLAKE-NEXT: #APP 134; SKYLAKE-NEXT: fabs # sched: [1:1.00] 135; SKYLAKE-NEXT: #NO_APP 136; SKYLAKE-NEXT: retl # sched: [6:0.50] 137; 138; SKX-LABEL: test_fabs: 139; SKX: # %bb.0: 140; SKX-NEXT: #APP 141; SKX-NEXT: fabs # sched: [1:1.00] 142; SKX-NEXT: #NO_APP 143; SKX-NEXT: retl # sched: [6:0.50] 144; 145; BTVER2-LABEL: test_fabs: 146; BTVER2: # %bb.0: 147; BTVER2-NEXT: #APP 148; BTVER2-NEXT: fabs # sched: [2:1.00] 149; BTVER2-NEXT: #NO_APP 150; BTVER2-NEXT: retl # sched: [4:1.00] 151; 152; ZNVER1-LABEL: test_fabs: 153; ZNVER1: # %bb.0: 154; ZNVER1-NEXT: #APP 155; ZNVER1-NEXT: fabs # sched: [2:1.00] 156; ZNVER1-NEXT: #NO_APP 157; ZNVER1-NEXT: retl # sched: [1:0.50] 158 tail call void asm sideeffect "fabs", ""() nounwind 159 ret void 160} 161 162define void @test_fadd(float *%a0, double *%a1) optsize { 163; GENERIC-LABEL: test_fadd: 164; GENERIC: # %bb.0: 165; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 166; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 167; GENERIC-NEXT: #APP 168; GENERIC-NEXT: fadd %st(0), %st(1) 169; GENERIC-NEXT: fadd %st(2) 170; GENERIC-NEXT: fadds (%ecx) 171; GENERIC-NEXT: faddl (%eax) 172; GENERIC-NEXT: #NO_APP 173; GENERIC-NEXT: retl 174; 175; ATOM-LABEL: test_fadd: 176; ATOM: # %bb.0: 177; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 178; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 179; ATOM-NEXT: #APP 180; ATOM-NEXT: fadd %st(0), %st(1) # sched: [5:5.00] 181; ATOM-NEXT: fadd %st(2) # sched: [5:5.00] 182; ATOM-NEXT: fadds (%ecx) # sched: [5:5.00] 183; ATOM-NEXT: faddl (%eax) # sched: [5:5.00] 184; ATOM-NEXT: #NO_APP 185; ATOM-NEXT: retl # sched: [79:39.50] 186; 187; SLM-LABEL: test_fadd: 188; SLM: # %bb.0: 189; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 190; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 191; SLM-NEXT: #APP 192; SLM-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 193; SLM-NEXT: fadd %st(2) # sched: [3:1.00] 194; SLM-NEXT: fadds (%ecx) # sched: [6:1.00] 195; SLM-NEXT: faddl (%eax) # sched: [6:1.00] 196; SLM-NEXT: #NO_APP 197; SLM-NEXT: retl # sched: [4:1.00] 198; 199; SANDY-LABEL: test_fadd: 200; SANDY: # %bb.0: 201; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 202; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 203; SANDY-NEXT: #APP 204; SANDY-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 205; SANDY-NEXT: fadd %st(2) # sched: [3:1.00] 206; SANDY-NEXT: fadds (%ecx) # sched: [10:1.00] 207; SANDY-NEXT: faddl (%eax) # sched: [10:1.00] 208; SANDY-NEXT: #NO_APP 209; SANDY-NEXT: retl # sched: [6:1.00] 210; 211; HASWELL-LABEL: test_fadd: 212; HASWELL: # %bb.0: 213; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 214; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 215; HASWELL-NEXT: #APP 216; HASWELL-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 217; HASWELL-NEXT: fadd %st(2) # sched: [3:1.00] 218; HASWELL-NEXT: fadds (%ecx) # sched: [10:1.00] 219; HASWELL-NEXT: faddl (%eax) # sched: [10:1.00] 220; HASWELL-NEXT: #NO_APP 221; HASWELL-NEXT: retl # sched: [7:1.00] 222; 223; BROADWELL-LABEL: test_fadd: 224; BROADWELL: # %bb.0: 225; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 226; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 227; BROADWELL-NEXT: #APP 228; BROADWELL-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 229; BROADWELL-NEXT: fadd %st(2) # sched: [3:1.00] 230; BROADWELL-NEXT: fadds (%ecx) # sched: [9:1.00] 231; BROADWELL-NEXT: faddl (%eax) # sched: [9:1.00] 232; BROADWELL-NEXT: #NO_APP 233; BROADWELL-NEXT: retl # sched: [6:0.50] 234; 235; SKYLAKE-LABEL: test_fadd: 236; SKYLAKE: # %bb.0: 237; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 238; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 239; SKYLAKE-NEXT: #APP 240; SKYLAKE-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 241; SKYLAKE-NEXT: fadd %st(2) # sched: [3:1.00] 242; SKYLAKE-NEXT: fadds (%ecx) # sched: [10:1.00] 243; SKYLAKE-NEXT: faddl (%eax) # sched: [10:1.00] 244; SKYLAKE-NEXT: #NO_APP 245; SKYLAKE-NEXT: retl # sched: [6:0.50] 246; 247; SKX-LABEL: test_fadd: 248; SKX: # %bb.0: 249; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 250; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 251; SKX-NEXT: #APP 252; SKX-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 253; SKX-NEXT: fadd %st(2) # sched: [3:1.00] 254; SKX-NEXT: fadds (%ecx) # sched: [10:1.00] 255; SKX-NEXT: faddl (%eax) # sched: [10:1.00] 256; SKX-NEXT: #NO_APP 257; SKX-NEXT: retl # sched: [6:0.50] 258; 259; BTVER2-LABEL: test_fadd: 260; BTVER2: # %bb.0: 261; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 262; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 263; BTVER2-NEXT: #APP 264; BTVER2-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 265; BTVER2-NEXT: fadd %st(2) # sched: [3:1.00] 266; BTVER2-NEXT: fadds (%ecx) # sched: [8:1.00] 267; BTVER2-NEXT: faddl (%eax) # sched: [8:1.00] 268; BTVER2-NEXT: #NO_APP 269; BTVER2-NEXT: retl # sched: [4:1.00] 270; 271; ZNVER1-LABEL: test_fadd: 272; ZNVER1: # %bb.0: 273; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 274; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 275; ZNVER1-NEXT: #APP 276; ZNVER1-NEXT: fadd %st(0), %st(1) # sched: [3:1.00] 277; ZNVER1-NEXT: fadd %st(2) # sched: [3:1.00] 278; ZNVER1-NEXT: fadds (%ecx) # sched: [10:1.00] 279; ZNVER1-NEXT: faddl (%eax) # sched: [10:1.00] 280; ZNVER1-NEXT: #NO_APP 281; ZNVER1-NEXT: retl # sched: [1:0.50] 282 tail call void asm sideeffect "fadd %st(0), %st(1) \0A\09 fadd %st(2), %st(0) \0A\09 fadds $0 \0A\09 faddl $1", "*m,*m"(float *%a0, double *%a1) nounwind 283 ret void 284} 285 286define void @test_faddp_fiadd(i16 *%a0, i32 *%a1) optsize { 287; GENERIC-LABEL: test_faddp_fiadd: 288; GENERIC: # %bb.0: 289; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 290; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 291; GENERIC-NEXT: #APP 292; GENERIC-NEXT: faddp %st(1) 293; GENERIC-NEXT: faddp %st(2) 294; GENERIC-NEXT: fiadds (%ecx) 295; GENERIC-NEXT: fiaddl (%eax) 296; GENERIC-NEXT: #NO_APP 297; GENERIC-NEXT: retl 298; 299; ATOM-LABEL: test_faddp_fiadd: 300; ATOM: # %bb.0: 301; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 302; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 303; ATOM-NEXT: #APP 304; ATOM-NEXT: faddp %st(1) # sched: [5:5.00] 305; ATOM-NEXT: faddp %st(2) # sched: [5:5.00] 306; ATOM-NEXT: fiadds (%ecx) # sched: [5:5.00] 307; ATOM-NEXT: fiaddl (%eax) # sched: [5:5.00] 308; ATOM-NEXT: #NO_APP 309; ATOM-NEXT: retl # sched: [79:39.50] 310; 311; SLM-LABEL: test_faddp_fiadd: 312; SLM: # %bb.0: 313; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 314; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 315; SLM-NEXT: #APP 316; SLM-NEXT: faddp %st(1) # sched: [3:1.00] 317; SLM-NEXT: faddp %st(2) # sched: [3:1.00] 318; SLM-NEXT: fiadds (%ecx) # sched: [6:1.00] 319; SLM-NEXT: fiaddl (%eax) # sched: [6:1.00] 320; SLM-NEXT: #NO_APP 321; SLM-NEXT: retl # sched: [4:1.00] 322; 323; SANDY-LABEL: test_faddp_fiadd: 324; SANDY: # %bb.0: 325; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 326; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 327; SANDY-NEXT: #APP 328; SANDY-NEXT: faddp %st(1) # sched: [3:1.00] 329; SANDY-NEXT: faddp %st(2) # sched: [3:1.00] 330; SANDY-NEXT: fiadds (%ecx) # sched: [13:2.00] 331; SANDY-NEXT: fiaddl (%eax) # sched: [13:2.00] 332; SANDY-NEXT: #NO_APP 333; SANDY-NEXT: retl # sched: [6:1.00] 334; 335; HASWELL-LABEL: test_faddp_fiadd: 336; HASWELL: # %bb.0: 337; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 338; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 339; HASWELL-NEXT: #APP 340; HASWELL-NEXT: faddp %st(1) # sched: [3:1.00] 341; HASWELL-NEXT: faddp %st(2) # sched: [3:1.00] 342; HASWELL-NEXT: fiadds (%ecx) # sched: [13:2.00] 343; HASWELL-NEXT: fiaddl (%eax) # sched: [13:2.00] 344; HASWELL-NEXT: #NO_APP 345; HASWELL-NEXT: retl # sched: [7:1.00] 346; 347; BROADWELL-LABEL: test_faddp_fiadd: 348; BROADWELL: # %bb.0: 349; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 350; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 351; BROADWELL-NEXT: #APP 352; BROADWELL-NEXT: faddp %st(1) # sched: [3:1.00] 353; BROADWELL-NEXT: faddp %st(2) # sched: [3:1.00] 354; BROADWELL-NEXT: fiadds (%ecx) # sched: [12:2.00] 355; BROADWELL-NEXT: fiaddl (%eax) # sched: [12:2.00] 356; BROADWELL-NEXT: #NO_APP 357; BROADWELL-NEXT: retl # sched: [6:0.50] 358; 359; SKYLAKE-LABEL: test_faddp_fiadd: 360; SKYLAKE: # %bb.0: 361; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 362; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 363; SKYLAKE-NEXT: #APP 364; SKYLAKE-NEXT: faddp %st(1) # sched: [3:1.00] 365; SKYLAKE-NEXT: faddp %st(2) # sched: [3:1.00] 366; SKYLAKE-NEXT: fiadds (%ecx) # sched: [13:2.00] 367; SKYLAKE-NEXT: fiaddl (%eax) # sched: [13:2.00] 368; SKYLAKE-NEXT: #NO_APP 369; SKYLAKE-NEXT: retl # sched: [6:0.50] 370; 371; SKX-LABEL: test_faddp_fiadd: 372; SKX: # %bb.0: 373; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 374; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 375; SKX-NEXT: #APP 376; SKX-NEXT: faddp %st(1) # sched: [3:1.00] 377; SKX-NEXT: faddp %st(2) # sched: [3:1.00] 378; SKX-NEXT: fiadds (%ecx) # sched: [13:2.00] 379; SKX-NEXT: fiaddl (%eax) # sched: [13:2.00] 380; SKX-NEXT: #NO_APP 381; SKX-NEXT: retl # sched: [6:0.50] 382; 383; BTVER2-LABEL: test_faddp_fiadd: 384; BTVER2: # %bb.0: 385; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 386; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 387; BTVER2-NEXT: #APP 388; BTVER2-NEXT: faddp %st(1) # sched: [3:1.00] 389; BTVER2-NEXT: faddp %st(2) # sched: [3:1.00] 390; BTVER2-NEXT: fiadds (%ecx) # sched: [8:1.00] 391; BTVER2-NEXT: fiaddl (%eax) # sched: [8:1.00] 392; BTVER2-NEXT: #NO_APP 393; BTVER2-NEXT: retl # sched: [4:1.00] 394; 395; ZNVER1-LABEL: test_faddp_fiadd: 396; ZNVER1: # %bb.0: 397; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 398; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 399; ZNVER1-NEXT: #APP 400; ZNVER1-NEXT: faddp %st(1) # sched: [3:1.00] 401; ZNVER1-NEXT: faddp %st(2) # sched: [3:1.00] 402; ZNVER1-NEXT: fiadds (%ecx) # sched: [10:1.00] 403; ZNVER1-NEXT: fiaddl (%eax) # sched: [10:1.00] 404; ZNVER1-NEXT: #NO_APP 405; ZNVER1-NEXT: retl # sched: [1:0.50] 406 tail call void asm sideeffect "faddp \0A\09 faddp %st(2), %st(0) \0A\09 fiadds $0 \0A\09 fiaddl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 407 ret void 408} 409 410define void @test_fbld_fbstp(i8* %a0) optsize { 411; GENERIC-LABEL: test_fbld_fbstp: 412; GENERIC: # %bb.0: 413; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 414; GENERIC-NEXT: #APP 415; GENERIC-NEXT: fbld (%eax) 416; GENERIC-NEXT: fbstp (%eax) 417; GENERIC-NEXT: #NO_APP 418; GENERIC-NEXT: retl 419; 420; ATOM-LABEL: test_fbld_fbstp: 421; ATOM: # %bb.0: 422; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 423; ATOM-NEXT: #APP 424; ATOM-NEXT: fbld (%eax) # sched: [100:0.50] 425; ATOM-NEXT: fbstp (%eax) # sched: [100:0.50] 426; ATOM-NEXT: #NO_APP 427; ATOM-NEXT: retl # sched: [79:39.50] 428; 429; SLM-LABEL: test_fbld_fbstp: 430; SLM: # %bb.0: 431; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 432; SLM-NEXT: #APP 433; SLM-NEXT: fbld (%eax) # sched: [100:1.00] 434; SLM-NEXT: fbstp (%eax) # sched: [100:1.00] 435; SLM-NEXT: #NO_APP 436; SLM-NEXT: retl # sched: [4:1.00] 437; 438; SANDY-LABEL: test_fbld_fbstp: 439; SANDY: # %bb.0: 440; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 441; SANDY-NEXT: #APP 442; SANDY-NEXT: fbld (%eax) # sched: [100:0.33] 443; SANDY-NEXT: fbstp (%eax) # sched: [100:0.33] 444; SANDY-NEXT: #NO_APP 445; SANDY-NEXT: retl # sched: [6:1.00] 446; 447; HASWELL-LABEL: test_fbld_fbstp: 448; HASWELL: # %bb.0: 449; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 450; HASWELL-NEXT: #APP 451; HASWELL-NEXT: fbld (%eax) # sched: [47:10.75] 452; HASWELL-NEXT: fbstp (%eax) # sched: [1:1.00] 453; HASWELL-NEXT: #NO_APP 454; HASWELL-NEXT: retl # sched: [7:1.00] 455; 456; BROADWELL-LABEL: test_fbld_fbstp: 457; BROADWELL: # %bb.0: 458; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 459; BROADWELL-NEXT: #APP 460; BROADWELL-NEXT: fbld (%eax) # sched: [100:0.25] 461; BROADWELL-NEXT: fbstp (%eax) # sched: [1:1.00] 462; BROADWELL-NEXT: #NO_APP 463; BROADWELL-NEXT: retl # sched: [6:0.50] 464; 465; SKYLAKE-LABEL: test_fbld_fbstp: 466; SKYLAKE: # %bb.0: 467; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 468; SKYLAKE-NEXT: #APP 469; SKYLAKE-NEXT: fbld (%eax) # sched: [100:0.25] 470; SKYLAKE-NEXT: fbstp (%eax) # sched: [1:1.00] 471; SKYLAKE-NEXT: #NO_APP 472; SKYLAKE-NEXT: retl # sched: [6:0.50] 473; 474; SKX-LABEL: test_fbld_fbstp: 475; SKX: # %bb.0: 476; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 477; SKX-NEXT: #APP 478; SKX-NEXT: fbld (%eax) # sched: [100:0.25] 479; SKX-NEXT: fbstp (%eax) # sched: [1:1.00] 480; SKX-NEXT: #NO_APP 481; SKX-NEXT: retl # sched: [6:0.50] 482; 483; BTVER2-LABEL: test_fbld_fbstp: 484; BTVER2: # %bb.0: 485; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 486; BTVER2-NEXT: #APP 487; BTVER2-NEXT: fbld (%eax) # sched: [100:0.50] 488; BTVER2-NEXT: fbstp (%eax) # sched: [100:0.50] 489; BTVER2-NEXT: #NO_APP 490; BTVER2-NEXT: retl # sched: [4:1.00] 491; 492; ZNVER1-LABEL: test_fbld_fbstp: 493; ZNVER1: # %bb.0: 494; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 495; ZNVER1-NEXT: #APP 496; ZNVER1-NEXT: fbld (%eax) # sched: [100:0.25] 497; ZNVER1-NEXT: fbstp (%eax) # sched: [100:0.25] 498; ZNVER1-NEXT: #NO_APP 499; ZNVER1-NEXT: retl # sched: [1:0.50] 500 tail call void asm sideeffect "fbld $0 \0A\09 fbstp $0", "*m"(i8 *%a0) nounwind 501 ret void 502} 503 504define void @test_fchs() optsize { 505; GENERIC-LABEL: test_fchs: 506; GENERIC: # %bb.0: 507; GENERIC-NEXT: #APP 508; GENERIC-NEXT: fchs 509; GENERIC-NEXT: #NO_APP 510; GENERIC-NEXT: retl 511; 512; ATOM-LABEL: test_fchs: 513; ATOM: # %bb.0: 514; ATOM-NEXT: #APP 515; ATOM-NEXT: fchs # sched: [1:1.00] 516; ATOM-NEXT: #NO_APP 517; ATOM-NEXT: retl # sched: [79:39.50] 518; 519; SLM-LABEL: test_fchs: 520; SLM: # %bb.0: 521; SLM-NEXT: #APP 522; SLM-NEXT: fchs # sched: [1:0.50] 523; SLM-NEXT: #NO_APP 524; SLM-NEXT: retl # sched: [4:1.00] 525; 526; SANDY-LABEL: test_fchs: 527; SANDY: # %bb.0: 528; SANDY-NEXT: #APP 529; SANDY-NEXT: fchs # sched: [1:1.00] 530; SANDY-NEXT: #NO_APP 531; SANDY-NEXT: retl # sched: [6:1.00] 532; 533; HASWELL-LABEL: test_fchs: 534; HASWELL: # %bb.0: 535; HASWELL-NEXT: #APP 536; HASWELL-NEXT: fchs # sched: [1:1.00] 537; HASWELL-NEXT: #NO_APP 538; HASWELL-NEXT: retl # sched: [7:1.00] 539; 540; BROADWELL-LABEL: test_fchs: 541; BROADWELL: # %bb.0: 542; BROADWELL-NEXT: #APP 543; BROADWELL-NEXT: fchs # sched: [1:1.00] 544; BROADWELL-NEXT: #NO_APP 545; BROADWELL-NEXT: retl # sched: [6:0.50] 546; 547; SKYLAKE-LABEL: test_fchs: 548; SKYLAKE: # %bb.0: 549; SKYLAKE-NEXT: #APP 550; SKYLAKE-NEXT: fchs # sched: [1:1.00] 551; SKYLAKE-NEXT: #NO_APP 552; SKYLAKE-NEXT: retl # sched: [6:0.50] 553; 554; SKX-LABEL: test_fchs: 555; SKX: # %bb.0: 556; SKX-NEXT: #APP 557; SKX-NEXT: fchs # sched: [1:1.00] 558; SKX-NEXT: #NO_APP 559; SKX-NEXT: retl # sched: [6:0.50] 560; 561; BTVER2-LABEL: test_fchs: 562; BTVER2: # %bb.0: 563; BTVER2-NEXT: #APP 564; BTVER2-NEXT: fchs # sched: [2:1.00] 565; BTVER2-NEXT: #NO_APP 566; BTVER2-NEXT: retl # sched: [4:1.00] 567; 568; ZNVER1-LABEL: test_fchs: 569; ZNVER1: # %bb.0: 570; ZNVER1-NEXT: #APP 571; ZNVER1-NEXT: fchs # sched: [1:1.00] 572; ZNVER1-NEXT: #NO_APP 573; ZNVER1-NEXT: retl # sched: [1:0.50] 574 tail call void asm sideeffect "fchs", ""() nounwind 575 ret void 576} 577 578define void @test_fclex() optsize { 579; GENERIC-LABEL: test_fclex: 580; GENERIC: # %bb.0: 581; GENERIC-NEXT: #APP 582; GENERIC-NEXT: wait 583; GENERIC-NEXT: fnclex 584; GENERIC-NEXT: #NO_APP 585; GENERIC-NEXT: retl 586; 587; ATOM-LABEL: test_fclex: 588; ATOM: # %bb.0: 589; ATOM-NEXT: #APP 590; ATOM-NEXT: wait # sched: [1:0.50] 591; ATOM-NEXT: fnclex # sched: [25:12.50] 592; ATOM-NEXT: #NO_APP 593; ATOM-NEXT: retl # sched: [79:39.50] 594; 595; SLM-LABEL: test_fclex: 596; SLM: # %bb.0: 597; SLM-NEXT: #APP 598; SLM-NEXT: wait # sched: [100:1.00] 599; SLM-NEXT: fnclex # sched: [100:1.00] 600; SLM-NEXT: #NO_APP 601; SLM-NEXT: retl # sched: [4:1.00] 602; 603; SANDY-LABEL: test_fclex: 604; SANDY: # %bb.0: 605; SANDY-NEXT: #APP 606; SANDY-NEXT: wait # sched: [100:0.33] 607; SANDY-NEXT: fnclex # sched: [100:0.33] 608; SANDY-NEXT: #NO_APP 609; SANDY-NEXT: retl # sched: [6:1.00] 610; 611; HASWELL-LABEL: test_fclex: 612; HASWELL: # %bb.0: 613; HASWELL-NEXT: #APP 614; HASWELL-NEXT: wait # sched: [2:0.50] 615; HASWELL-NEXT: fnclex # sched: [4:1.00] 616; HASWELL-NEXT: #NO_APP 617; HASWELL-NEXT: retl # sched: [7:1.00] 618; 619; BROADWELL-LABEL: test_fclex: 620; BROADWELL: # %bb.0: 621; BROADWELL-NEXT: #APP 622; BROADWELL-NEXT: wait # sched: [2:0.50] 623; BROADWELL-NEXT: fnclex # sched: [4:1.00] 624; BROADWELL-NEXT: #NO_APP 625; BROADWELL-NEXT: retl # sched: [6:0.50] 626; 627; SKYLAKE-LABEL: test_fclex: 628; SKYLAKE: # %bb.0: 629; SKYLAKE-NEXT: #APP 630; SKYLAKE-NEXT: wait # sched: [2:0.50] 631; SKYLAKE-NEXT: fnclex # sched: [4:1.00] 632; SKYLAKE-NEXT: #NO_APP 633; SKYLAKE-NEXT: retl # sched: [6:0.50] 634; 635; SKX-LABEL: test_fclex: 636; SKX: # %bb.0: 637; SKX-NEXT: #APP 638; SKX-NEXT: wait # sched: [2:0.50] 639; SKX-NEXT: fnclex # sched: [4:1.00] 640; SKX-NEXT: #NO_APP 641; SKX-NEXT: retl # sched: [6:0.50] 642; 643; BTVER2-LABEL: test_fclex: 644; BTVER2: # %bb.0: 645; BTVER2-NEXT: #APP 646; BTVER2-NEXT: wait # sched: [100:0.50] 647; BTVER2-NEXT: fnclex # sched: [100:0.50] 648; BTVER2-NEXT: #NO_APP 649; BTVER2-NEXT: retl # sched: [4:1.00] 650; 651; ZNVER1-LABEL: test_fclex: 652; ZNVER1: # %bb.0: 653; ZNVER1-NEXT: #APP 654; ZNVER1-NEXT: wait # sched: [1:1.00] 655; ZNVER1-NEXT: fnclex # sched: [100:0.25] 656; ZNVER1-NEXT: #NO_APP 657; ZNVER1-NEXT: retl # sched: [1:0.50] 658 tail call void asm sideeffect "fclex", ""() nounwind 659 ret void 660} 661 662define void @test_fnclex() optsize { 663; GENERIC-LABEL: test_fnclex: 664; GENERIC: # %bb.0: 665; GENERIC-NEXT: #APP 666; GENERIC-NEXT: fnclex 667; GENERIC-NEXT: #NO_APP 668; GENERIC-NEXT: retl 669; 670; ATOM-LABEL: test_fnclex: 671; ATOM: # %bb.0: 672; ATOM-NEXT: #APP 673; ATOM-NEXT: fnclex # sched: [25:12.50] 674; ATOM-NEXT: #NO_APP 675; ATOM-NEXT: retl # sched: [79:39.50] 676; 677; SLM-LABEL: test_fnclex: 678; SLM: # %bb.0: 679; SLM-NEXT: #APP 680; SLM-NEXT: fnclex # sched: [100:1.00] 681; SLM-NEXT: #NO_APP 682; SLM-NEXT: retl # sched: [4:1.00] 683; 684; SANDY-LABEL: test_fnclex: 685; SANDY: # %bb.0: 686; SANDY-NEXT: #APP 687; SANDY-NEXT: fnclex # sched: [100:0.33] 688; SANDY-NEXT: #NO_APP 689; SANDY-NEXT: retl # sched: [6:1.00] 690; 691; HASWELL-LABEL: test_fnclex: 692; HASWELL: # %bb.0: 693; HASWELL-NEXT: #APP 694; HASWELL-NEXT: fnclex # sched: [4:1.00] 695; HASWELL-NEXT: #NO_APP 696; HASWELL-NEXT: retl # sched: [7:1.00] 697; 698; BROADWELL-LABEL: test_fnclex: 699; BROADWELL: # %bb.0: 700; BROADWELL-NEXT: #APP 701; BROADWELL-NEXT: fnclex # sched: [4:1.00] 702; BROADWELL-NEXT: #NO_APP 703; BROADWELL-NEXT: retl # sched: [6:0.50] 704; 705; SKYLAKE-LABEL: test_fnclex: 706; SKYLAKE: # %bb.0: 707; SKYLAKE-NEXT: #APP 708; SKYLAKE-NEXT: fnclex # sched: [4:1.00] 709; SKYLAKE-NEXT: #NO_APP 710; SKYLAKE-NEXT: retl # sched: [6:0.50] 711; 712; SKX-LABEL: test_fnclex: 713; SKX: # %bb.0: 714; SKX-NEXT: #APP 715; SKX-NEXT: fnclex # sched: [4:1.00] 716; SKX-NEXT: #NO_APP 717; SKX-NEXT: retl # sched: [6:0.50] 718; 719; BTVER2-LABEL: test_fnclex: 720; BTVER2: # %bb.0: 721; BTVER2-NEXT: #APP 722; BTVER2-NEXT: fnclex # sched: [100:0.50] 723; BTVER2-NEXT: #NO_APP 724; BTVER2-NEXT: retl # sched: [4:1.00] 725; 726; ZNVER1-LABEL: test_fnclex: 727; ZNVER1: # %bb.0: 728; ZNVER1-NEXT: #APP 729; ZNVER1-NEXT: fnclex # sched: [100:0.25] 730; ZNVER1-NEXT: #NO_APP 731; ZNVER1-NEXT: retl # sched: [1:0.50] 732 tail call void asm sideeffect "fnclex", ""() nounwind 733 ret void 734} 735 736define void @test_fcmov() optsize { 737; GENERIC-LABEL: test_fcmov: 738; GENERIC: # %bb.0: 739; GENERIC-NEXT: #APP 740; GENERIC-NEXT: fcmovb %st(1), %st(0) 741; GENERIC-NEXT: fcmovbe %st(1), %st(0) 742; GENERIC-NEXT: fcmove %st(1), %st(0) 743; GENERIC-NEXT: fcmovnb %st(1), %st(0) 744; GENERIC-NEXT: fcmovnbe %st(1), %st(0) 745; GENERIC-NEXT: fcmovne %st(1), %st(0) 746; GENERIC-NEXT: fcmovnu %st(1), %st(0) 747; GENERIC-NEXT: fcmovu %st(1), %st(0) 748; GENERIC-NEXT: #NO_APP 749; GENERIC-NEXT: retl 750; 751; ATOM-LABEL: test_fcmov: 752; ATOM: # %bb.0: 753; ATOM-NEXT: #APP 754; ATOM-NEXT: fcmovb %st(1), %st(0) # sched: [9:4.50] 755; ATOM-NEXT: fcmovbe %st(1), %st(0) # sched: [9:4.50] 756; ATOM-NEXT: fcmove %st(1), %st(0) # sched: [9:4.50] 757; ATOM-NEXT: fcmovnb %st(1), %st(0) # sched: [9:4.50] 758; ATOM-NEXT: fcmovnbe %st(1), %st(0) # sched: [9:4.50] 759; ATOM-NEXT: fcmovne %st(1), %st(0) # sched: [9:4.50] 760; ATOM-NEXT: fcmovnu %st(1), %st(0) # sched: [9:4.50] 761; ATOM-NEXT: fcmovu %st(1), %st(0) # sched: [9:4.50] 762; ATOM-NEXT: #NO_APP 763; ATOM-NEXT: retl # sched: [79:39.50] 764; 765; SLM-LABEL: test_fcmov: 766; SLM: # %bb.0: 767; SLM-NEXT: #APP 768; SLM-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 769; SLM-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 770; SLM-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 771; SLM-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 772; SLM-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 773; SLM-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 774; SLM-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 775; SLM-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 776; SLM-NEXT: #NO_APP 777; SLM-NEXT: retl # sched: [4:1.00] 778; 779; SANDY-LABEL: test_fcmov: 780; SANDY: # %bb.0: 781; SANDY-NEXT: #APP 782; SANDY-NEXT: fcmovb %st(1), %st(0) # sched: [3:2.00] 783; SANDY-NEXT: fcmovbe %st(1), %st(0) # sched: [3:2.00] 784; SANDY-NEXT: fcmove %st(1), %st(0) # sched: [3:2.00] 785; SANDY-NEXT: fcmovnb %st(1), %st(0) # sched: [3:2.00] 786; SANDY-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:2.00] 787; SANDY-NEXT: fcmovne %st(1), %st(0) # sched: [3:2.00] 788; SANDY-NEXT: fcmovnu %st(1), %st(0) # sched: [3:2.00] 789; SANDY-NEXT: fcmovu %st(1), %st(0) # sched: [3:2.00] 790; SANDY-NEXT: #NO_APP 791; SANDY-NEXT: retl # sched: [6:1.00] 792; 793; HASWELL-LABEL: test_fcmov: 794; HASWELL: # %bb.0: 795; HASWELL-NEXT: #APP 796; HASWELL-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 797; HASWELL-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 798; HASWELL-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 799; HASWELL-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 800; HASWELL-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 801; HASWELL-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 802; HASWELL-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 803; HASWELL-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 804; HASWELL-NEXT: #NO_APP 805; HASWELL-NEXT: retl # sched: [7:1.00] 806; 807; BROADWELL-LABEL: test_fcmov: 808; BROADWELL: # %bb.0: 809; BROADWELL-NEXT: #APP 810; BROADWELL-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 811; BROADWELL-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 812; BROADWELL-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 813; BROADWELL-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 814; BROADWELL-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 815; BROADWELL-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 816; BROADWELL-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 817; BROADWELL-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 818; BROADWELL-NEXT: #NO_APP 819; BROADWELL-NEXT: retl # sched: [6:0.50] 820; 821; SKYLAKE-LABEL: test_fcmov: 822; SKYLAKE: # %bb.0: 823; SKYLAKE-NEXT: #APP 824; SKYLAKE-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 825; SKYLAKE-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 826; SKYLAKE-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 827; SKYLAKE-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 828; SKYLAKE-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 829; SKYLAKE-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 830; SKYLAKE-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 831; SKYLAKE-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 832; SKYLAKE-NEXT: #NO_APP 833; SKYLAKE-NEXT: retl # sched: [6:0.50] 834; 835; SKX-LABEL: test_fcmov: 836; SKX: # %bb.0: 837; SKX-NEXT: #APP 838; SKX-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 839; SKX-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 840; SKX-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 841; SKX-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 842; SKX-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 843; SKX-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 844; SKX-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 845; SKX-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 846; SKX-NEXT: #NO_APP 847; SKX-NEXT: retl # sched: [6:0.50] 848; 849; BTVER2-LABEL: test_fcmov: 850; BTVER2: # %bb.0: 851; BTVER2-NEXT: #APP 852; BTVER2-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00] 853; BTVER2-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00] 854; BTVER2-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00] 855; BTVER2-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00] 856; BTVER2-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00] 857; BTVER2-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00] 858; BTVER2-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00] 859; BTVER2-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00] 860; BTVER2-NEXT: #NO_APP 861; BTVER2-NEXT: retl # sched: [4:1.00] 862; 863; ZNVER1-LABEL: test_fcmov: 864; ZNVER1: # %bb.0: 865; ZNVER1-NEXT: #APP 866; ZNVER1-NEXT: fcmovb %st(1), %st(0) # sched: [100:0.25] 867; ZNVER1-NEXT: fcmovbe %st(1), %st(0) # sched: [100:0.25] 868; ZNVER1-NEXT: fcmove %st(1), %st(0) # sched: [100:0.25] 869; ZNVER1-NEXT: fcmovnb %st(1), %st(0) # sched: [100:0.25] 870; ZNVER1-NEXT: fcmovnbe %st(1), %st(0) # sched: [100:0.25] 871; ZNVER1-NEXT: fcmovne %st(1), %st(0) # sched: [100:0.25] 872; ZNVER1-NEXT: fcmovnu %st(1), %st(0) # sched: [100:0.25] 873; ZNVER1-NEXT: fcmovu %st(1), %st(0) # sched: [100:0.25] 874; ZNVER1-NEXT: #NO_APP 875; ZNVER1-NEXT: retl # sched: [1:0.50] 876 tail call void asm sideeffect "fcmovb %st(1), %st(0) \0A\09 fcmovbe %st(1), %st(0) \0A\09 fcmove %st(1), %st(0) \0A\09 fcmovnb %st(1), %st(0) \0A\09 fcmovnbe %st(1), %st(0) \0A\09 fcmovne %st(1), %st(0) \0A\09 fcmovnu %st(1), %st(0) \0A\09 fcmovu %st(1), %st(0)", ""() nounwind 877 ret void 878} 879 880define void @test_fcom(float *%a0, double *%a1) optsize { 881; GENERIC-LABEL: test_fcom: 882; GENERIC: # %bb.0: 883; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 884; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 885; GENERIC-NEXT: #APP 886; GENERIC-NEXT: fcom %st(1) 887; GENERIC-NEXT: fcom %st(3) 888; GENERIC-NEXT: fcoms (%ecx) 889; GENERIC-NEXT: fcoml (%eax) 890; GENERIC-NEXT: #NO_APP 891; GENERIC-NEXT: retl 892; 893; ATOM-LABEL: test_fcom: 894; ATOM: # %bb.0: 895; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 896; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 897; ATOM-NEXT: #APP 898; ATOM-NEXT: fcom %st(1) # sched: [5:5.00] 899; ATOM-NEXT: fcom %st(3) # sched: [5:5.00] 900; ATOM-NEXT: fcoms (%ecx) # sched: [5:5.00] 901; ATOM-NEXT: fcoml (%eax) # sched: [5:5.00] 902; ATOM-NEXT: #NO_APP 903; ATOM-NEXT: retl # sched: [79:39.50] 904; 905; SLM-LABEL: test_fcom: 906; SLM: # %bb.0: 907; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 908; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 909; SLM-NEXT: #APP 910; SLM-NEXT: fcom %st(1) # sched: [3:1.00] 911; SLM-NEXT: fcom %st(3) # sched: [3:1.00] 912; SLM-NEXT: fcoms (%ecx) # sched: [6:1.00] 913; SLM-NEXT: fcoml (%eax) # sched: [6:1.00] 914; SLM-NEXT: #NO_APP 915; SLM-NEXT: retl # sched: [4:1.00] 916; 917; SANDY-LABEL: test_fcom: 918; SANDY: # %bb.0: 919; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 920; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 921; SANDY-NEXT: #APP 922; SANDY-NEXT: fcom %st(1) # sched: [1:1.00] 923; SANDY-NEXT: fcom %st(3) # sched: [1:1.00] 924; SANDY-NEXT: fcoms (%ecx) # sched: [8:1.00] 925; SANDY-NEXT: fcoml (%eax) # sched: [8:1.00] 926; SANDY-NEXT: #NO_APP 927; SANDY-NEXT: retl # sched: [6:1.00] 928; 929; HASWELL-LABEL: test_fcom: 930; HASWELL: # %bb.0: 931; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 932; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 933; HASWELL-NEXT: #APP 934; HASWELL-NEXT: fcom %st(1) # sched: [1:1.00] 935; HASWELL-NEXT: fcom %st(3) # sched: [1:1.00] 936; HASWELL-NEXT: fcoms (%ecx) # sched: [8:1.00] 937; HASWELL-NEXT: fcoml (%eax) # sched: [8:1.00] 938; HASWELL-NEXT: #NO_APP 939; HASWELL-NEXT: retl # sched: [7:1.00] 940; 941; BROADWELL-LABEL: test_fcom: 942; BROADWELL: # %bb.0: 943; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 944; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 945; BROADWELL-NEXT: #APP 946; BROADWELL-NEXT: fcom %st(1) # sched: [1:1.00] 947; BROADWELL-NEXT: fcom %st(3) # sched: [1:1.00] 948; BROADWELL-NEXT: fcoms (%ecx) # sched: [7:1.00] 949; BROADWELL-NEXT: fcoml (%eax) # sched: [7:1.00] 950; BROADWELL-NEXT: #NO_APP 951; BROADWELL-NEXT: retl # sched: [6:0.50] 952; 953; SKYLAKE-LABEL: test_fcom: 954; SKYLAKE: # %bb.0: 955; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 956; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 957; SKYLAKE-NEXT: #APP 958; SKYLAKE-NEXT: fcom %st(1) # sched: [1:1.00] 959; SKYLAKE-NEXT: fcom %st(3) # sched: [1:1.00] 960; SKYLAKE-NEXT: fcoms (%ecx) # sched: [8:1.00] 961; SKYLAKE-NEXT: fcoml (%eax) # sched: [8:1.00] 962; SKYLAKE-NEXT: #NO_APP 963; SKYLAKE-NEXT: retl # sched: [6:0.50] 964; 965; SKX-LABEL: test_fcom: 966; SKX: # %bb.0: 967; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 968; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 969; SKX-NEXT: #APP 970; SKX-NEXT: fcom %st(1) # sched: [1:1.00] 971; SKX-NEXT: fcom %st(3) # sched: [1:1.00] 972; SKX-NEXT: fcoms (%ecx) # sched: [8:1.00] 973; SKX-NEXT: fcoml (%eax) # sched: [8:1.00] 974; SKX-NEXT: #NO_APP 975; SKX-NEXT: retl # sched: [6:0.50] 976; 977; BTVER2-LABEL: test_fcom: 978; BTVER2: # %bb.0: 979; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 980; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 981; BTVER2-NEXT: #APP 982; BTVER2-NEXT: fcom %st(1) # sched: [3:1.00] 983; BTVER2-NEXT: fcom %st(3) # sched: [3:1.00] 984; BTVER2-NEXT: fcoms (%ecx) # sched: [8:1.00] 985; BTVER2-NEXT: fcoml (%eax) # sched: [8:1.00] 986; BTVER2-NEXT: #NO_APP 987; BTVER2-NEXT: retl # sched: [4:1.00] 988; 989; ZNVER1-LABEL: test_fcom: 990; ZNVER1: # %bb.0: 991; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 992; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 993; ZNVER1-NEXT: #APP 994; ZNVER1-NEXT: fcom %st(1) # sched: [1:1.00] 995; ZNVER1-NEXT: fcom %st(3) # sched: [1:1.00] 996; ZNVER1-NEXT: fcoms (%ecx) # sched: [8:1.00] 997; ZNVER1-NEXT: fcoml (%eax) # sched: [8:1.00] 998; ZNVER1-NEXT: #NO_APP 999; ZNVER1-NEXT: retl # sched: [1:0.50] 1000 tail call void asm sideeffect "fcom \0A\09 fcom %st(3) \0A\09 fcoms $0 \0A\09 fcoml $1", "*m,*m"(float *%a0, double *%a1) nounwind 1001 ret void 1002} 1003 1004define void @test_fcomp_fcompp(float *%a0, double *%a1) optsize { 1005; GENERIC-LABEL: test_fcomp_fcompp: 1006; GENERIC: # %bb.0: 1007; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1008; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1009; GENERIC-NEXT: #APP 1010; GENERIC-NEXT: fcomp %st(1) 1011; GENERIC-NEXT: fcomp %st(3) 1012; GENERIC-NEXT: fcomps (%ecx) 1013; GENERIC-NEXT: fcompl (%eax) 1014; GENERIC-NEXT: fcompp 1015; GENERIC-NEXT: #NO_APP 1016; GENERIC-NEXT: retl 1017; 1018; ATOM-LABEL: test_fcomp_fcompp: 1019; ATOM: # %bb.0: 1020; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1021; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1022; ATOM-NEXT: #APP 1023; ATOM-NEXT: fcomp %st(1) # sched: [5:5.00] 1024; ATOM-NEXT: fcomp %st(3) # sched: [5:5.00] 1025; ATOM-NEXT: fcomps (%ecx) # sched: [5:5.00] 1026; ATOM-NEXT: fcompl (%eax) # sched: [5:5.00] 1027; ATOM-NEXT: fcompp # sched: [1:1.00] 1028; ATOM-NEXT: #NO_APP 1029; ATOM-NEXT: retl # sched: [79:39.50] 1030; 1031; SLM-LABEL: test_fcomp_fcompp: 1032; SLM: # %bb.0: 1033; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1034; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1035; SLM-NEXT: #APP 1036; SLM-NEXT: fcomp %st(1) # sched: [3:1.00] 1037; SLM-NEXT: fcomp %st(3) # sched: [3:1.00] 1038; SLM-NEXT: fcomps (%ecx) # sched: [6:1.00] 1039; SLM-NEXT: fcompl (%eax) # sched: [6:1.00] 1040; SLM-NEXT: fcompp # sched: [100:1.00] 1041; SLM-NEXT: #NO_APP 1042; SLM-NEXT: retl # sched: [4:1.00] 1043; 1044; SANDY-LABEL: test_fcomp_fcompp: 1045; SANDY: # %bb.0: 1046; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1047; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1048; SANDY-NEXT: #APP 1049; SANDY-NEXT: fcomp %st(1) # sched: [1:1.00] 1050; SANDY-NEXT: fcomp %st(3) # sched: [1:1.00] 1051; SANDY-NEXT: fcomps (%ecx) # sched: [8:1.00] 1052; SANDY-NEXT: fcompl (%eax) # sched: [8:1.00] 1053; SANDY-NEXT: fcompp # sched: [100:0.33] 1054; SANDY-NEXT: #NO_APP 1055; SANDY-NEXT: retl # sched: [6:1.00] 1056; 1057; HASWELL-LABEL: test_fcomp_fcompp: 1058; HASWELL: # %bb.0: 1059; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1060; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1061; HASWELL-NEXT: #APP 1062; HASWELL-NEXT: fcomp %st(1) # sched: [1:1.00] 1063; HASWELL-NEXT: fcomp %st(3) # sched: [1:1.00] 1064; HASWELL-NEXT: fcomps (%ecx) # sched: [8:1.00] 1065; HASWELL-NEXT: fcompl (%eax) # sched: [8:1.00] 1066; HASWELL-NEXT: fcompp # sched: [1:0.50] 1067; HASWELL-NEXT: #NO_APP 1068; HASWELL-NEXT: retl # sched: [7:1.00] 1069; 1070; BROADWELL-LABEL: test_fcomp_fcompp: 1071; BROADWELL: # %bb.0: 1072; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1073; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1074; BROADWELL-NEXT: #APP 1075; BROADWELL-NEXT: fcomp %st(1) # sched: [1:1.00] 1076; BROADWELL-NEXT: fcomp %st(3) # sched: [1:1.00] 1077; BROADWELL-NEXT: fcomps (%ecx) # sched: [7:1.00] 1078; BROADWELL-NEXT: fcompl (%eax) # sched: [7:1.00] 1079; BROADWELL-NEXT: fcompp # sched: [100:0.25] 1080; BROADWELL-NEXT: #NO_APP 1081; BROADWELL-NEXT: retl # sched: [6:0.50] 1082; 1083; SKYLAKE-LABEL: test_fcomp_fcompp: 1084; SKYLAKE: # %bb.0: 1085; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1086; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1087; SKYLAKE-NEXT: #APP 1088; SKYLAKE-NEXT: fcomp %st(1) # sched: [1:1.00] 1089; SKYLAKE-NEXT: fcomp %st(3) # sched: [1:1.00] 1090; SKYLAKE-NEXT: fcomps (%ecx) # sched: [8:1.00] 1091; SKYLAKE-NEXT: fcompl (%eax) # sched: [8:1.00] 1092; SKYLAKE-NEXT: fcompp # sched: [100:0.25] 1093; SKYLAKE-NEXT: #NO_APP 1094; SKYLAKE-NEXT: retl # sched: [6:0.50] 1095; 1096; SKX-LABEL: test_fcomp_fcompp: 1097; SKX: # %bb.0: 1098; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1099; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1100; SKX-NEXT: #APP 1101; SKX-NEXT: fcomp %st(1) # sched: [1:1.00] 1102; SKX-NEXT: fcomp %st(3) # sched: [1:1.00] 1103; SKX-NEXT: fcomps (%ecx) # sched: [8:1.00] 1104; SKX-NEXT: fcompl (%eax) # sched: [8:1.00] 1105; SKX-NEXT: fcompp # sched: [100:0.25] 1106; SKX-NEXT: #NO_APP 1107; SKX-NEXT: retl # sched: [6:0.50] 1108; 1109; BTVER2-LABEL: test_fcomp_fcompp: 1110; BTVER2: # %bb.0: 1111; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1112; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1113; BTVER2-NEXT: #APP 1114; BTVER2-NEXT: fcomp %st(1) # sched: [3:1.00] 1115; BTVER2-NEXT: fcomp %st(3) # sched: [3:1.00] 1116; BTVER2-NEXT: fcomps (%ecx) # sched: [8:1.00] 1117; BTVER2-NEXT: fcompl (%eax) # sched: [8:1.00] 1118; BTVER2-NEXT: fcompp # sched: [100:0.50] 1119; BTVER2-NEXT: #NO_APP 1120; BTVER2-NEXT: retl # sched: [4:1.00] 1121; 1122; ZNVER1-LABEL: test_fcomp_fcompp: 1123; ZNVER1: # %bb.0: 1124; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1125; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1126; ZNVER1-NEXT: #APP 1127; ZNVER1-NEXT: fcomp %st(1) # sched: [1:1.00] 1128; ZNVER1-NEXT: fcomp %st(3) # sched: [1:1.00] 1129; ZNVER1-NEXT: fcomps (%ecx) # sched: [8:1.00] 1130; ZNVER1-NEXT: fcompl (%eax) # sched: [8:1.00] 1131; ZNVER1-NEXT: fcompp # sched: [1:1.00] 1132; ZNVER1-NEXT: #NO_APP 1133; ZNVER1-NEXT: retl # sched: [1:0.50] 1134 tail call void asm sideeffect "fcomp \0A\09 fcomp %st(3) \0A\09 fcomps $0 \0A\09 fcompl $1 \0A\09 fcompp", "*m,*m"(float *%a0, double *%a1) nounwind 1135 ret void 1136} 1137 1138define void @test_fcomi_fcomip() optsize { 1139; GENERIC-LABEL: test_fcomi_fcomip: 1140; GENERIC: # %bb.0: 1141; GENERIC-NEXT: #APP 1142; GENERIC-NEXT: fcomi %st(3) 1143; GENERIC-NEXT: fcompi %st(3) 1144; GENERIC-NEXT: #NO_APP 1145; GENERIC-NEXT: retl 1146; 1147; ATOM-LABEL: test_fcomi_fcomip: 1148; ATOM: # %bb.0: 1149; ATOM-NEXT: #APP 1150; ATOM-NEXT: fcomi %st(3) # sched: [9:4.50] 1151; ATOM-NEXT: fcompi %st(3) # sched: [9:4.50] 1152; ATOM-NEXT: #NO_APP 1153; ATOM-NEXT: retl # sched: [79:39.50] 1154; 1155; SLM-LABEL: test_fcomi_fcomip: 1156; SLM: # %bb.0: 1157; SLM-NEXT: #APP 1158; SLM-NEXT: fcomi %st(3) # sched: [3:1.00] 1159; SLM-NEXT: fcompi %st(3) # sched: [3:1.00] 1160; SLM-NEXT: #NO_APP 1161; SLM-NEXT: retl # sched: [4:1.00] 1162; 1163; SANDY-LABEL: test_fcomi_fcomip: 1164; SANDY: # %bb.0: 1165; SANDY-NEXT: #APP 1166; SANDY-NEXT: fcomi %st(3) # sched: [3:1.00] 1167; SANDY-NEXT: fcompi %st(3) # sched: [3:1.00] 1168; SANDY-NEXT: #NO_APP 1169; SANDY-NEXT: retl # sched: [6:1.00] 1170; 1171; HASWELL-LABEL: test_fcomi_fcomip: 1172; HASWELL: # %bb.0: 1173; HASWELL-NEXT: #APP 1174; HASWELL-NEXT: fcomi %st(3) # sched: [1:0.50] 1175; HASWELL-NEXT: fcompi %st(3) # sched: [1:0.50] 1176; HASWELL-NEXT: #NO_APP 1177; HASWELL-NEXT: retl # sched: [7:1.00] 1178; 1179; BROADWELL-LABEL: test_fcomi_fcomip: 1180; BROADWELL: # %bb.0: 1181; BROADWELL-NEXT: #APP 1182; BROADWELL-NEXT: fcomi %st(3) # sched: [3:1.00] 1183; BROADWELL-NEXT: fcompi %st(3) # sched: [3:1.00] 1184; BROADWELL-NEXT: #NO_APP 1185; BROADWELL-NEXT: retl # sched: [6:0.50] 1186; 1187; SKYLAKE-LABEL: test_fcomi_fcomip: 1188; SKYLAKE: # %bb.0: 1189; SKYLAKE-NEXT: #APP 1190; SKYLAKE-NEXT: fcomi %st(3) # sched: [2:1.00] 1191; SKYLAKE-NEXT: fcompi %st(3) # sched: [2:1.00] 1192; SKYLAKE-NEXT: #NO_APP 1193; SKYLAKE-NEXT: retl # sched: [6:0.50] 1194; 1195; SKX-LABEL: test_fcomi_fcomip: 1196; SKX: # %bb.0: 1197; SKX-NEXT: #APP 1198; SKX-NEXT: fcomi %st(3) # sched: [2:1.00] 1199; SKX-NEXT: fcompi %st(3) # sched: [2:1.00] 1200; SKX-NEXT: #NO_APP 1201; SKX-NEXT: retl # sched: [6:0.50] 1202; 1203; BTVER2-LABEL: test_fcomi_fcomip: 1204; BTVER2: # %bb.0: 1205; BTVER2-NEXT: #APP 1206; BTVER2-NEXT: fcomi %st(3) # sched: [3:1.00] 1207; BTVER2-NEXT: fcompi %st(3) # sched: [3:1.00] 1208; BTVER2-NEXT: #NO_APP 1209; BTVER2-NEXT: retl # sched: [4:1.00] 1210; 1211; ZNVER1-LABEL: test_fcomi_fcomip: 1212; ZNVER1: # %bb.0: 1213; ZNVER1-NEXT: #APP 1214; ZNVER1-NEXT: fcomi %st(3) # sched: [9:0.50] 1215; ZNVER1-NEXT: fcompi %st(3) # sched: [9:0.50] 1216; ZNVER1-NEXT: #NO_APP 1217; ZNVER1-NEXT: retl # sched: [1:0.50] 1218 tail call void asm sideeffect "fcomi %st(3) \0A\09 fcomip %st(3)", ""() nounwind 1219 ret void 1220} 1221 1222define void @test_fcos() optsize { 1223; GENERIC-LABEL: test_fcos: 1224; GENERIC: # %bb.0: 1225; GENERIC-NEXT: #APP 1226; GENERIC-NEXT: fcos 1227; GENERIC-NEXT: #NO_APP 1228; GENERIC-NEXT: retl 1229; 1230; ATOM-LABEL: test_fcos: 1231; ATOM: # %bb.0: 1232; ATOM-NEXT: #APP 1233; ATOM-NEXT: fcos # sched: [174:87.00] 1234; ATOM-NEXT: #NO_APP 1235; ATOM-NEXT: retl # sched: [79:39.50] 1236; 1237; SLM-LABEL: test_fcos: 1238; SLM: # %bb.0: 1239; SLM-NEXT: #APP 1240; SLM-NEXT: fcos # sched: [100:1.00] 1241; SLM-NEXT: #NO_APP 1242; SLM-NEXT: retl # sched: [4:1.00] 1243; 1244; SANDY-LABEL: test_fcos: 1245; SANDY: # %bb.0: 1246; SANDY-NEXT: #APP 1247; SANDY-NEXT: fcos # sched: [100:0.33] 1248; SANDY-NEXT: #NO_APP 1249; SANDY-NEXT: retl # sched: [6:1.00] 1250; 1251; HASWELL-LABEL: test_fcos: 1252; HASWELL: # %bb.0: 1253; HASWELL-NEXT: #APP 1254; HASWELL-NEXT: fcos # sched: [100:0.25] 1255; HASWELL-NEXT: #NO_APP 1256; HASWELL-NEXT: retl # sched: [7:1.00] 1257; 1258; BROADWELL-LABEL: test_fcos: 1259; BROADWELL: # %bb.0: 1260; BROADWELL-NEXT: #APP 1261; BROADWELL-NEXT: fcos # sched: [100:0.25] 1262; BROADWELL-NEXT: #NO_APP 1263; BROADWELL-NEXT: retl # sched: [6:0.50] 1264; 1265; SKYLAKE-LABEL: test_fcos: 1266; SKYLAKE: # %bb.0: 1267; SKYLAKE-NEXT: #APP 1268; SKYLAKE-NEXT: fcos # sched: [100:0.25] 1269; SKYLAKE-NEXT: #NO_APP 1270; SKYLAKE-NEXT: retl # sched: [6:0.50] 1271; 1272; SKX-LABEL: test_fcos: 1273; SKX: # %bb.0: 1274; SKX-NEXT: #APP 1275; SKX-NEXT: fcos # sched: [100:0.25] 1276; SKX-NEXT: #NO_APP 1277; SKX-NEXT: retl # sched: [6:0.50] 1278; 1279; BTVER2-LABEL: test_fcos: 1280; BTVER2: # %bb.0: 1281; BTVER2-NEXT: #APP 1282; BTVER2-NEXT: fcos # sched: [100:0.50] 1283; BTVER2-NEXT: #NO_APP 1284; BTVER2-NEXT: retl # sched: [4:1.00] 1285; 1286; ZNVER1-LABEL: test_fcos: 1287; ZNVER1: # %bb.0: 1288; ZNVER1-NEXT: #APP 1289; ZNVER1-NEXT: fcos # sched: [100:0.25] 1290; ZNVER1-NEXT: #NO_APP 1291; ZNVER1-NEXT: retl # sched: [1:0.50] 1292 tail call void asm sideeffect "fcos", ""() nounwind 1293 ret void 1294} 1295 1296define void @test_fdecstp() optsize { 1297; GENERIC-LABEL: test_fdecstp: 1298; GENERIC: # %bb.0: 1299; GENERIC-NEXT: #APP 1300; GENERIC-NEXT: fdecstp 1301; GENERIC-NEXT: #NO_APP 1302; GENERIC-NEXT: retl 1303; 1304; ATOM-LABEL: test_fdecstp: 1305; ATOM: # %bb.0: 1306; ATOM-NEXT: #APP 1307; ATOM-NEXT: fdecstp # sched: [1:0.50] 1308; ATOM-NEXT: #NO_APP 1309; ATOM-NEXT: retl # sched: [79:39.50] 1310; 1311; SLM-LABEL: test_fdecstp: 1312; SLM: # %bb.0: 1313; SLM-NEXT: #APP 1314; SLM-NEXT: fdecstp # sched: [100:1.00] 1315; SLM-NEXT: #NO_APP 1316; SLM-NEXT: retl # sched: [4:1.00] 1317; 1318; SANDY-LABEL: test_fdecstp: 1319; SANDY: # %bb.0: 1320; SANDY-NEXT: #APP 1321; SANDY-NEXT: fdecstp # sched: [1:1.00] 1322; SANDY-NEXT: #NO_APP 1323; SANDY-NEXT: retl # sched: [6:1.00] 1324; 1325; HASWELL-LABEL: test_fdecstp: 1326; HASWELL: # %bb.0: 1327; HASWELL-NEXT: #APP 1328; HASWELL-NEXT: fdecstp # sched: [2:1.00] 1329; HASWELL-NEXT: #NO_APP 1330; HASWELL-NEXT: retl # sched: [7:1.00] 1331; 1332; BROADWELL-LABEL: test_fdecstp: 1333; BROADWELL: # %bb.0: 1334; BROADWELL-NEXT: #APP 1335; BROADWELL-NEXT: fdecstp # sched: [2:1.00] 1336; BROADWELL-NEXT: #NO_APP 1337; BROADWELL-NEXT: retl # sched: [6:0.50] 1338; 1339; SKYLAKE-LABEL: test_fdecstp: 1340; SKYLAKE: # %bb.0: 1341; SKYLAKE-NEXT: #APP 1342; SKYLAKE-NEXT: fdecstp # sched: [2:1.00] 1343; SKYLAKE-NEXT: #NO_APP 1344; SKYLAKE-NEXT: retl # sched: [6:0.50] 1345; 1346; SKX-LABEL: test_fdecstp: 1347; SKX: # %bb.0: 1348; SKX-NEXT: #APP 1349; SKX-NEXT: fdecstp # sched: [2:1.00] 1350; SKX-NEXT: #NO_APP 1351; SKX-NEXT: retl # sched: [6:0.50] 1352; 1353; BTVER2-LABEL: test_fdecstp: 1354; BTVER2: # %bb.0: 1355; BTVER2-NEXT: #APP 1356; BTVER2-NEXT: fdecstp # sched: [100:0.50] 1357; BTVER2-NEXT: #NO_APP 1358; BTVER2-NEXT: retl # sched: [4:1.00] 1359; 1360; ZNVER1-LABEL: test_fdecstp: 1361; ZNVER1: # %bb.0: 1362; ZNVER1-NEXT: #APP 1363; ZNVER1-NEXT: fdecstp # sched: [11:1.00] 1364; ZNVER1-NEXT: #NO_APP 1365; ZNVER1-NEXT: retl # sched: [1:0.50] 1366 tail call void asm sideeffect "fdecstp", ""() nounwind 1367 ret void 1368} 1369 1370define void @test_fdiv(float *%a0, double *%a1) optsize { 1371; GENERIC-LABEL: test_fdiv: 1372; GENERIC: # %bb.0: 1373; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1374; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1375; GENERIC-NEXT: #APP 1376; GENERIC-NEXT: fdiv %st(0), %st(1) 1377; GENERIC-NEXT: fdiv %st(2) 1378; GENERIC-NEXT: fdivs (%ecx) 1379; GENERIC-NEXT: fdivl (%eax) 1380; GENERIC-NEXT: #NO_APP 1381; GENERIC-NEXT: retl 1382; 1383; ATOM-LABEL: test_fdiv: 1384; ATOM: # %bb.0: 1385; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1386; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1387; ATOM-NEXT: #APP 1388; ATOM-NEXT: fdiv %st(0), %st(1) # sched: [34:17.00] 1389; ATOM-NEXT: fdiv %st(2) # sched: [34:17.00] 1390; ATOM-NEXT: fdivs (%ecx) # sched: [34:17.00] 1391; ATOM-NEXT: fdivl (%eax) # sched: [34:17.00] 1392; ATOM-NEXT: #NO_APP 1393; ATOM-NEXT: retl # sched: [79:39.50] 1394; 1395; SLM-LABEL: test_fdiv: 1396; SLM: # %bb.0: 1397; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1398; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1399; SLM-NEXT: #APP 1400; SLM-NEXT: fdiv %st(0), %st(1) # sched: [19:17.00] 1401; SLM-NEXT: fdiv %st(2) # sched: [19:17.00] 1402; SLM-NEXT: fdivs (%ecx) # sched: [22:17.00] 1403; SLM-NEXT: fdivl (%eax) # sched: [22:17.00] 1404; SLM-NEXT: #NO_APP 1405; SLM-NEXT: retl # sched: [4:1.00] 1406; 1407; SANDY-LABEL: test_fdiv: 1408; SANDY: # %bb.0: 1409; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1410; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1411; SANDY-NEXT: #APP 1412; SANDY-NEXT: fdiv %st(0), %st(1) # sched: [14:14.00] 1413; SANDY-NEXT: fdiv %st(2) # sched: [14:14.00] 1414; SANDY-NEXT: fdivs (%ecx) # sched: [31:1.00] 1415; SANDY-NEXT: fdivl (%eax) # sched: [31:1.00] 1416; SANDY-NEXT: #NO_APP 1417; SANDY-NEXT: retl # sched: [6:1.00] 1418; 1419; HASWELL-LABEL: test_fdiv: 1420; HASWELL: # %bb.0: 1421; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1422; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1423; HASWELL-NEXT: #APP 1424; HASWELL-NEXT: fdiv %st(0), %st(1) # sched: [24:1.00] 1425; HASWELL-NEXT: fdiv %st(2) # sched: [20:1.00] 1426; HASWELL-NEXT: fdivs (%ecx) # sched: [31:1.00] 1427; HASWELL-NEXT: fdivl (%eax) # sched: [31:1.00] 1428; HASWELL-NEXT: #NO_APP 1429; HASWELL-NEXT: retl # sched: [7:1.00] 1430; 1431; BROADWELL-LABEL: test_fdiv: 1432; BROADWELL: # %bb.0: 1433; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1434; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1435; BROADWELL-NEXT: #APP 1436; BROADWELL-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] 1437; BROADWELL-NEXT: fdiv %st(2) # sched: [20:1.00] 1438; BROADWELL-NEXT: fdivs (%ecx) # sched: [21:1.00] 1439; BROADWELL-NEXT: fdivl (%eax) # sched: [21:1.00] 1440; BROADWELL-NEXT: #NO_APP 1441; BROADWELL-NEXT: retl # sched: [6:0.50] 1442; 1443; SKYLAKE-LABEL: test_fdiv: 1444; SKYLAKE: # %bb.0: 1445; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1446; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1447; SKYLAKE-NEXT: #APP 1448; SKYLAKE-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] 1449; SKYLAKE-NEXT: fdiv %st(2) # sched: [20:1.00] 1450; SKYLAKE-NEXT: fdivs (%ecx) # sched: [22:1.00] 1451; SKYLAKE-NEXT: fdivl (%eax) # sched: [22:1.00] 1452; SKYLAKE-NEXT: #NO_APP 1453; SKYLAKE-NEXT: retl # sched: [6:0.50] 1454; 1455; SKX-LABEL: test_fdiv: 1456; SKX: # %bb.0: 1457; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1458; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1459; SKX-NEXT: #APP 1460; SKX-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] 1461; SKX-NEXT: fdiv %st(2) # sched: [20:1.00] 1462; SKX-NEXT: fdivs (%ecx) # sched: [22:1.00] 1463; SKX-NEXT: fdivl (%eax) # sched: [22:1.00] 1464; SKX-NEXT: #NO_APP 1465; SKX-NEXT: retl # sched: [6:0.50] 1466; 1467; BTVER2-LABEL: test_fdiv: 1468; BTVER2: # %bb.0: 1469; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1470; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1471; BTVER2-NEXT: #APP 1472; BTVER2-NEXT: fdiv %st(0), %st(1) # sched: [19:19.00] 1473; BTVER2-NEXT: fdiv %st(2) # sched: [19:19.00] 1474; BTVER2-NEXT: fdivs (%ecx) # sched: [24:19.00] 1475; BTVER2-NEXT: fdivl (%eax) # sched: [24:19.00] 1476; BTVER2-NEXT: #NO_APP 1477; BTVER2-NEXT: retl # sched: [4:1.00] 1478; 1479; ZNVER1-LABEL: test_fdiv: 1480; ZNVER1: # %bb.0: 1481; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1482; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1483; ZNVER1-NEXT: #APP 1484; ZNVER1-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00] 1485; ZNVER1-NEXT: fdiv %st(2) # sched: [15:1.00] 1486; ZNVER1-NEXT: fdivs (%ecx) # sched: [22:1.00] 1487; ZNVER1-NEXT: fdivl (%eax) # sched: [22:1.00] 1488; ZNVER1-NEXT: #NO_APP 1489; ZNVER1-NEXT: retl # sched: [1:0.50] 1490 tail call void asm sideeffect "fdiv %st(0), %st(1) \0A\09 fdiv %st(2), %st(0) \0A\09 fdivs $0 \0A\09 fdivl $1", "*m,*m"(float *%a0, double *%a1) nounwind 1491 ret void 1492} 1493 1494define void @test_fdivp_fidiv(i16 *%a0, i32 *%a1) optsize { 1495; GENERIC-LABEL: test_fdivp_fidiv: 1496; GENERIC: # %bb.0: 1497; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1498; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1499; GENERIC-NEXT: #APP 1500; GENERIC-NEXT: fdivp %st(1) 1501; GENERIC-NEXT: fdivp %st(2) 1502; GENERIC-NEXT: fidivs (%ecx) 1503; GENERIC-NEXT: fidivl (%eax) 1504; GENERIC-NEXT: #NO_APP 1505; GENERIC-NEXT: retl 1506; 1507; ATOM-LABEL: test_fdivp_fidiv: 1508; ATOM: # %bb.0: 1509; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1510; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1511; ATOM-NEXT: #APP 1512; ATOM-NEXT: fdivp %st(1) # sched: [34:17.00] 1513; ATOM-NEXT: fdivp %st(2) # sched: [34:17.00] 1514; ATOM-NEXT: fidivs (%ecx) # sched: [34:17.00] 1515; ATOM-NEXT: fidivl (%eax) # sched: [34:17.00] 1516; ATOM-NEXT: #NO_APP 1517; ATOM-NEXT: retl # sched: [79:39.50] 1518; 1519; SLM-LABEL: test_fdivp_fidiv: 1520; SLM: # %bb.0: 1521; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1522; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1523; SLM-NEXT: #APP 1524; SLM-NEXT: fdivp %st(1) # sched: [19:17.00] 1525; SLM-NEXT: fdivp %st(2) # sched: [19:17.00] 1526; SLM-NEXT: fidivs (%ecx) # sched: [22:17.00] 1527; SLM-NEXT: fidivl (%eax) # sched: [22:17.00] 1528; SLM-NEXT: #NO_APP 1529; SLM-NEXT: retl # sched: [4:1.00] 1530; 1531; SANDY-LABEL: test_fdivp_fidiv: 1532; SANDY: # %bb.0: 1533; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1534; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1535; SANDY-NEXT: #APP 1536; SANDY-NEXT: fdivp %st(1) # sched: [14:14.00] 1537; SANDY-NEXT: fdivp %st(2) # sched: [14:14.00] 1538; SANDY-NEXT: fidivs (%ecx) # sched: [34:1.00] 1539; SANDY-NEXT: fidivl (%eax) # sched: [34:1.00] 1540; SANDY-NEXT: #NO_APP 1541; SANDY-NEXT: retl # sched: [6:1.00] 1542; 1543; HASWELL-LABEL: test_fdivp_fidiv: 1544; HASWELL: # %bb.0: 1545; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1546; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1547; HASWELL-NEXT: #APP 1548; HASWELL-NEXT: fdivp %st(1) # sched: [24:1.00] 1549; HASWELL-NEXT: fdivp %st(2) # sched: [24:1.00] 1550; HASWELL-NEXT: fidivs (%ecx) # sched: [34:1.00] 1551; HASWELL-NEXT: fidivl (%eax) # sched: [34:1.00] 1552; HASWELL-NEXT: #NO_APP 1553; HASWELL-NEXT: retl # sched: [7:1.00] 1554; 1555; BROADWELL-LABEL: test_fdivp_fidiv: 1556; BROADWELL: # %bb.0: 1557; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1558; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1559; BROADWELL-NEXT: #APP 1560; BROADWELL-NEXT: fdivp %st(1) # sched: [15:1.00] 1561; BROADWELL-NEXT: fdivp %st(2) # sched: [15:1.00] 1562; BROADWELL-NEXT: fidivs (%ecx) # sched: [24:1.00] 1563; BROADWELL-NEXT: fidivl (%eax) # sched: [24:1.00] 1564; BROADWELL-NEXT: #NO_APP 1565; BROADWELL-NEXT: retl # sched: [6:0.50] 1566; 1567; SKYLAKE-LABEL: test_fdivp_fidiv: 1568; SKYLAKE: # %bb.0: 1569; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1570; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1571; SKYLAKE-NEXT: #APP 1572; SKYLAKE-NEXT: fdivp %st(1) # sched: [15:1.00] 1573; SKYLAKE-NEXT: fdivp %st(2) # sched: [15:1.00] 1574; SKYLAKE-NEXT: fidivs (%ecx) # sched: [25:1.00] 1575; SKYLAKE-NEXT: fidivl (%eax) # sched: [25:1.00] 1576; SKYLAKE-NEXT: #NO_APP 1577; SKYLAKE-NEXT: retl # sched: [6:0.50] 1578; 1579; SKX-LABEL: test_fdivp_fidiv: 1580; SKX: # %bb.0: 1581; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1582; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1583; SKX-NEXT: #APP 1584; SKX-NEXT: fdivp %st(1) # sched: [15:1.00] 1585; SKX-NEXT: fdivp %st(2) # sched: [15:1.00] 1586; SKX-NEXT: fidivs (%ecx) # sched: [25:1.00] 1587; SKX-NEXT: fidivl (%eax) # sched: [25:1.00] 1588; SKX-NEXT: #NO_APP 1589; SKX-NEXT: retl # sched: [6:0.50] 1590; 1591; BTVER2-LABEL: test_fdivp_fidiv: 1592; BTVER2: # %bb.0: 1593; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1594; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1595; BTVER2-NEXT: #APP 1596; BTVER2-NEXT: fdivp %st(1) # sched: [19:19.00] 1597; BTVER2-NEXT: fdivp %st(2) # sched: [19:19.00] 1598; BTVER2-NEXT: fidivs (%ecx) # sched: [24:19.00] 1599; BTVER2-NEXT: fidivl (%eax) # sched: [24:19.00] 1600; BTVER2-NEXT: #NO_APP 1601; BTVER2-NEXT: retl # sched: [4:1.00] 1602; 1603; ZNVER1-LABEL: test_fdivp_fidiv: 1604; ZNVER1: # %bb.0: 1605; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1606; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1607; ZNVER1-NEXT: #APP 1608; ZNVER1-NEXT: fdivp %st(1) # sched: [15:1.00] 1609; ZNVER1-NEXT: fdivp %st(2) # sched: [15:1.00] 1610; ZNVER1-NEXT: fidivs (%ecx) # sched: [22:1.00] 1611; ZNVER1-NEXT: fidivl (%eax) # sched: [22:1.00] 1612; ZNVER1-NEXT: #NO_APP 1613; ZNVER1-NEXT: retl # sched: [1:0.50] 1614 tail call void asm sideeffect "fdivp \0A\09 fdivp %st(2), %st(0) \0A\09 fidivs $0 \0A\09 fidivl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 1615 ret void 1616} 1617 1618define void @test_fdivr(float *%a0, double *%a1) optsize { 1619; GENERIC-LABEL: test_fdivr: 1620; GENERIC: # %bb.0: 1621; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1622; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1623; GENERIC-NEXT: #APP 1624; GENERIC-NEXT: fdivr %st(0), %st(1) 1625; GENERIC-NEXT: fdivr %st(2) 1626; GENERIC-NEXT: fdivrs (%ecx) 1627; GENERIC-NEXT: fdivrl (%eax) 1628; GENERIC-NEXT: #NO_APP 1629; GENERIC-NEXT: retl 1630; 1631; ATOM-LABEL: test_fdivr: 1632; ATOM: # %bb.0: 1633; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1634; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1635; ATOM-NEXT: #APP 1636; ATOM-NEXT: fdivr %st(0), %st(1) # sched: [34:17.00] 1637; ATOM-NEXT: fdivr %st(2) # sched: [34:17.00] 1638; ATOM-NEXT: fdivrs (%ecx) # sched: [34:17.00] 1639; ATOM-NEXT: fdivrl (%eax) # sched: [34:17.00] 1640; ATOM-NEXT: #NO_APP 1641; ATOM-NEXT: retl # sched: [79:39.50] 1642; 1643; SLM-LABEL: test_fdivr: 1644; SLM: # %bb.0: 1645; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1646; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1647; SLM-NEXT: #APP 1648; SLM-NEXT: fdivr %st(0), %st(1) # sched: [19:17.00] 1649; SLM-NEXT: fdivr %st(2) # sched: [19:17.00] 1650; SLM-NEXT: fdivrs (%ecx) # sched: [22:17.00] 1651; SLM-NEXT: fdivrl (%eax) # sched: [22:17.00] 1652; SLM-NEXT: #NO_APP 1653; SLM-NEXT: retl # sched: [4:1.00] 1654; 1655; SANDY-LABEL: test_fdivr: 1656; SANDY: # %bb.0: 1657; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1658; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1659; SANDY-NEXT: #APP 1660; SANDY-NEXT: fdivr %st(0), %st(1) # sched: [14:14.00] 1661; SANDY-NEXT: fdivr %st(2) # sched: [14:14.00] 1662; SANDY-NEXT: fdivrs (%ecx) # sched: [31:1.00] 1663; SANDY-NEXT: fdivrl (%eax) # sched: [31:1.00] 1664; SANDY-NEXT: #NO_APP 1665; SANDY-NEXT: retl # sched: [6:1.00] 1666; 1667; HASWELL-LABEL: test_fdivr: 1668; HASWELL: # %bb.0: 1669; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1670; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1671; HASWELL-NEXT: #APP 1672; HASWELL-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] 1673; HASWELL-NEXT: fdivr %st(2) # sched: [24:1.00] 1674; HASWELL-NEXT: fdivrs (%ecx) # sched: [27:1.00] 1675; HASWELL-NEXT: fdivrl (%eax) # sched: [27:1.00] 1676; HASWELL-NEXT: #NO_APP 1677; HASWELL-NEXT: retl # sched: [7:1.00] 1678; 1679; BROADWELL-LABEL: test_fdivr: 1680; BROADWELL: # %bb.0: 1681; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1682; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1683; BROADWELL-NEXT: #APP 1684; BROADWELL-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] 1685; BROADWELL-NEXT: fdivr %st(2) # sched: [15:1.00] 1686; BROADWELL-NEXT: fdivrs (%ecx) # sched: [26:1.00] 1687; BROADWELL-NEXT: fdivrl (%eax) # sched: [26:1.00] 1688; BROADWELL-NEXT: #NO_APP 1689; BROADWELL-NEXT: retl # sched: [6:0.50] 1690; 1691; SKYLAKE-LABEL: test_fdivr: 1692; SKYLAKE: # %bb.0: 1693; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1694; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1695; SKYLAKE-NEXT: #APP 1696; SKYLAKE-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] 1697; SKYLAKE-NEXT: fdivr %st(2) # sched: [15:1.00] 1698; SKYLAKE-NEXT: fdivrs (%ecx) # sched: [27:1.00] 1699; SKYLAKE-NEXT: fdivrl (%eax) # sched: [27:1.00] 1700; SKYLAKE-NEXT: #NO_APP 1701; SKYLAKE-NEXT: retl # sched: [6:0.50] 1702; 1703; SKX-LABEL: test_fdivr: 1704; SKX: # %bb.0: 1705; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1706; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1707; SKX-NEXT: #APP 1708; SKX-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00] 1709; SKX-NEXT: fdivr %st(2) # sched: [15:1.00] 1710; SKX-NEXT: fdivrs (%ecx) # sched: [27:1.00] 1711; SKX-NEXT: fdivrl (%eax) # sched: [27:1.00] 1712; SKX-NEXT: #NO_APP 1713; SKX-NEXT: retl # sched: [6:0.50] 1714; 1715; BTVER2-LABEL: test_fdivr: 1716; BTVER2: # %bb.0: 1717; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1718; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1719; BTVER2-NEXT: #APP 1720; BTVER2-NEXT: fdivr %st(0), %st(1) # sched: [19:19.00] 1721; BTVER2-NEXT: fdivr %st(2) # sched: [19:19.00] 1722; BTVER2-NEXT: fdivrs (%ecx) # sched: [24:19.00] 1723; BTVER2-NEXT: fdivrl (%eax) # sched: [24:19.00] 1724; BTVER2-NEXT: #NO_APP 1725; BTVER2-NEXT: retl # sched: [4:1.00] 1726; 1727; ZNVER1-LABEL: test_fdivr: 1728; ZNVER1: # %bb.0: 1729; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1730; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1731; ZNVER1-NEXT: #APP 1732; ZNVER1-NEXT: fdivr %st(0), %st(1) # sched: [15:1.00] 1733; ZNVER1-NEXT: fdivr %st(2) # sched: [15:1.00] 1734; ZNVER1-NEXT: fdivrs (%ecx) # sched: [22:1.00] 1735; ZNVER1-NEXT: fdivrl (%eax) # sched: [22:1.00] 1736; ZNVER1-NEXT: #NO_APP 1737; ZNVER1-NEXT: retl # sched: [1:0.50] 1738 tail call void asm sideeffect "fdivr %st(0), %st(1) \0A\09 fdivr %st(2), %st(0) \0A\09 fdivrs $0 \0A\09 fdivrl $1", "*m,*m"(float *%a0, double *%a1) nounwind 1739 ret void 1740} 1741 1742define void @test_fdivrp_fidivr(i16 *%a0, i32 *%a1) optsize { 1743; GENERIC-LABEL: test_fdivrp_fidivr: 1744; GENERIC: # %bb.0: 1745; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1746; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1747; GENERIC-NEXT: #APP 1748; GENERIC-NEXT: fdivrp %st(1) 1749; GENERIC-NEXT: fdivrp %st(2) 1750; GENERIC-NEXT: fidivrs (%ecx) 1751; GENERIC-NEXT: fidivrl (%eax) 1752; GENERIC-NEXT: #NO_APP 1753; GENERIC-NEXT: retl 1754; 1755; ATOM-LABEL: test_fdivrp_fidivr: 1756; ATOM: # %bb.0: 1757; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1758; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1759; ATOM-NEXT: #APP 1760; ATOM-NEXT: fdivrp %st(1) # sched: [34:17.00] 1761; ATOM-NEXT: fdivrp %st(2) # sched: [34:17.00] 1762; ATOM-NEXT: fidivrs (%ecx) # sched: [34:17.00] 1763; ATOM-NEXT: fidivrl (%eax) # sched: [34:17.00] 1764; ATOM-NEXT: #NO_APP 1765; ATOM-NEXT: retl # sched: [79:39.50] 1766; 1767; SLM-LABEL: test_fdivrp_fidivr: 1768; SLM: # %bb.0: 1769; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1770; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1771; SLM-NEXT: #APP 1772; SLM-NEXT: fdivrp %st(1) # sched: [19:17.00] 1773; SLM-NEXT: fdivrp %st(2) # sched: [19:17.00] 1774; SLM-NEXT: fidivrs (%ecx) # sched: [22:17.00] 1775; SLM-NEXT: fidivrl (%eax) # sched: [22:17.00] 1776; SLM-NEXT: #NO_APP 1777; SLM-NEXT: retl # sched: [4:1.00] 1778; 1779; SANDY-LABEL: test_fdivrp_fidivr: 1780; SANDY: # %bb.0: 1781; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1782; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1783; SANDY-NEXT: #APP 1784; SANDY-NEXT: fdivrp %st(1) # sched: [14:14.00] 1785; SANDY-NEXT: fdivrp %st(2) # sched: [14:14.00] 1786; SANDY-NEXT: fidivrs (%ecx) # sched: [34:1.00] 1787; SANDY-NEXT: fidivrl (%eax) # sched: [34:1.00] 1788; SANDY-NEXT: #NO_APP 1789; SANDY-NEXT: retl # sched: [6:1.00] 1790; 1791; HASWELL-LABEL: test_fdivrp_fidivr: 1792; HASWELL: # %bb.0: 1793; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1794; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1795; HASWELL-NEXT: #APP 1796; HASWELL-NEXT: fdivrp %st(1) # sched: [20:1.00] 1797; HASWELL-NEXT: fdivrp %st(2) # sched: [20:1.00] 1798; HASWELL-NEXT: fidivrs (%ecx) # sched: [30:1.00] 1799; HASWELL-NEXT: fidivrl (%eax) # sched: [30:1.00] 1800; HASWELL-NEXT: #NO_APP 1801; HASWELL-NEXT: retl # sched: [7:1.00] 1802; 1803; BROADWELL-LABEL: test_fdivrp_fidivr: 1804; BROADWELL: # %bb.0: 1805; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1806; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1807; BROADWELL-NEXT: #APP 1808; BROADWELL-NEXT: fdivrp %st(1) # sched: [20:1.00] 1809; BROADWELL-NEXT: fdivrp %st(2) # sched: [20:1.00] 1810; BROADWELL-NEXT: fidivrs (%ecx) # sched: [29:1.00] 1811; BROADWELL-NEXT: fidivrl (%eax) # sched: [29:1.00] 1812; BROADWELL-NEXT: #NO_APP 1813; BROADWELL-NEXT: retl # sched: [6:0.50] 1814; 1815; SKYLAKE-LABEL: test_fdivrp_fidivr: 1816; SKYLAKE: # %bb.0: 1817; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1818; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1819; SKYLAKE-NEXT: #APP 1820; SKYLAKE-NEXT: fdivrp %st(1) # sched: [20:1.00] 1821; SKYLAKE-NEXT: fdivrp %st(2) # sched: [20:1.00] 1822; SKYLAKE-NEXT: fidivrs (%ecx) # sched: [30:1.00] 1823; SKYLAKE-NEXT: fidivrl (%eax) # sched: [30:1.00] 1824; SKYLAKE-NEXT: #NO_APP 1825; SKYLAKE-NEXT: retl # sched: [6:0.50] 1826; 1827; SKX-LABEL: test_fdivrp_fidivr: 1828; SKX: # %bb.0: 1829; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1830; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1831; SKX-NEXT: #APP 1832; SKX-NEXT: fdivrp %st(1) # sched: [20:1.00] 1833; SKX-NEXT: fdivrp %st(2) # sched: [20:1.00] 1834; SKX-NEXT: fidivrs (%ecx) # sched: [30:1.00] 1835; SKX-NEXT: fidivrl (%eax) # sched: [30:1.00] 1836; SKX-NEXT: #NO_APP 1837; SKX-NEXT: retl # sched: [6:0.50] 1838; 1839; BTVER2-LABEL: test_fdivrp_fidivr: 1840; BTVER2: # %bb.0: 1841; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 1842; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 1843; BTVER2-NEXT: #APP 1844; BTVER2-NEXT: fdivrp %st(1) # sched: [19:19.00] 1845; BTVER2-NEXT: fdivrp %st(2) # sched: [19:19.00] 1846; BTVER2-NEXT: fidivrs (%ecx) # sched: [24:19.00] 1847; BTVER2-NEXT: fidivrl (%eax) # sched: [24:19.00] 1848; BTVER2-NEXT: #NO_APP 1849; BTVER2-NEXT: retl # sched: [4:1.00] 1850; 1851; ZNVER1-LABEL: test_fdivrp_fidivr: 1852; ZNVER1: # %bb.0: 1853; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 1854; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 1855; ZNVER1-NEXT: #APP 1856; ZNVER1-NEXT: fdivrp %st(1) # sched: [15:1.00] 1857; ZNVER1-NEXT: fdivrp %st(2) # sched: [15:1.00] 1858; ZNVER1-NEXT: fidivrs (%ecx) # sched: [22:1.00] 1859; ZNVER1-NEXT: fidivrl (%eax) # sched: [22:1.00] 1860; ZNVER1-NEXT: #NO_APP 1861; ZNVER1-NEXT: retl # sched: [1:0.50] 1862 tail call void asm sideeffect "fdivrp \0A\09 fdivrp %st(2), %st(0) \0A\09 fidivrs $0 \0A\09 fidivrl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 1863 ret void 1864} 1865 1866define void @test_ffree() optsize { 1867; GENERIC-LABEL: test_ffree: 1868; GENERIC: # %bb.0: 1869; GENERIC-NEXT: #APP 1870; GENERIC-NEXT: ffree %st(0) 1871; GENERIC-NEXT: #NO_APP 1872; GENERIC-NEXT: retl 1873; 1874; ATOM-LABEL: test_ffree: 1875; ATOM: # %bb.0: 1876; ATOM-NEXT: #APP 1877; ATOM-NEXT: ffree %st(0) # sched: [1:0.50] 1878; ATOM-NEXT: #NO_APP 1879; ATOM-NEXT: retl # sched: [79:39.50] 1880; 1881; SLM-LABEL: test_ffree: 1882; SLM: # %bb.0: 1883; SLM-NEXT: #APP 1884; SLM-NEXT: ffree %st(0) # sched: [100:1.00] 1885; SLM-NEXT: #NO_APP 1886; SLM-NEXT: retl # sched: [4:1.00] 1887; 1888; SANDY-LABEL: test_ffree: 1889; SANDY: # %bb.0: 1890; SANDY-NEXT: #APP 1891; SANDY-NEXT: ffree %st(0) # sched: [1:1.00] 1892; SANDY-NEXT: #NO_APP 1893; SANDY-NEXT: retl # sched: [6:1.00] 1894; 1895; HASWELL-LABEL: test_ffree: 1896; HASWELL: # %bb.0: 1897; HASWELL-NEXT: #APP 1898; HASWELL-NEXT: ffree %st(0) # sched: [1:0.50] 1899; HASWELL-NEXT: #NO_APP 1900; HASWELL-NEXT: retl # sched: [7:1.00] 1901; 1902; BROADWELL-LABEL: test_ffree: 1903; BROADWELL: # %bb.0: 1904; BROADWELL-NEXT: #APP 1905; BROADWELL-NEXT: ffree %st(0) # sched: [100:0.25] 1906; BROADWELL-NEXT: #NO_APP 1907; BROADWELL-NEXT: retl # sched: [6:0.50] 1908; 1909; SKYLAKE-LABEL: test_ffree: 1910; SKYLAKE: # %bb.0: 1911; SKYLAKE-NEXT: #APP 1912; SKYLAKE-NEXT: ffree %st(0) # sched: [100:0.25] 1913; SKYLAKE-NEXT: #NO_APP 1914; SKYLAKE-NEXT: retl # sched: [6:0.50] 1915; 1916; SKX-LABEL: test_ffree: 1917; SKX: # %bb.0: 1918; SKX-NEXT: #APP 1919; SKX-NEXT: ffree %st(0) # sched: [100:0.25] 1920; SKX-NEXT: #NO_APP 1921; SKX-NEXT: retl # sched: [6:0.50] 1922; 1923; BTVER2-LABEL: test_ffree: 1924; BTVER2: # %bb.0: 1925; BTVER2-NEXT: #APP 1926; BTVER2-NEXT: ffree %st(0) # sched: [100:0.50] 1927; BTVER2-NEXT: #NO_APP 1928; BTVER2-NEXT: retl # sched: [4:1.00] 1929; 1930; ZNVER1-LABEL: test_ffree: 1931; ZNVER1: # %bb.0: 1932; ZNVER1-NEXT: #APP 1933; ZNVER1-NEXT: ffree %st(0) # sched: [11:1.00] 1934; ZNVER1-NEXT: #NO_APP 1935; ZNVER1-NEXT: retl # sched: [1:0.50] 1936 tail call void asm sideeffect "ffree %st(0)", ""() nounwind 1937 ret void 1938} 1939 1940define void @test_ficom(i16 *%a0, i32 *%a1) optsize { 1941; GENERIC-LABEL: test_ficom: 1942; GENERIC: # %bb.0: 1943; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 1944; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 1945; GENERIC-NEXT: #APP 1946; GENERIC-NEXT: ficoms (%ecx) 1947; GENERIC-NEXT: ficoml (%eax) 1948; GENERIC-NEXT: ficomps (%ecx) 1949; GENERIC-NEXT: ficompl (%eax) 1950; GENERIC-NEXT: #NO_APP 1951; GENERIC-NEXT: retl 1952; 1953; ATOM-LABEL: test_ficom: 1954; ATOM: # %bb.0: 1955; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 1956; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 1957; ATOM-NEXT: #APP 1958; ATOM-NEXT: ficoms (%ecx) # sched: [5:5.00] 1959; ATOM-NEXT: ficoml (%eax) # sched: [5:5.00] 1960; ATOM-NEXT: ficomps (%ecx) # sched: [5:5.00] 1961; ATOM-NEXT: ficompl (%eax) # sched: [5:5.00] 1962; ATOM-NEXT: #NO_APP 1963; ATOM-NEXT: retl # sched: [79:39.50] 1964; 1965; SLM-LABEL: test_ficom: 1966; SLM: # %bb.0: 1967; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 1968; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 1969; SLM-NEXT: #APP 1970; SLM-NEXT: ficoms (%ecx) # sched: [6:1.00] 1971; SLM-NEXT: ficoml (%eax) # sched: [6:1.00] 1972; SLM-NEXT: ficomps (%ecx) # sched: [6:1.00] 1973; SLM-NEXT: ficompl (%eax) # sched: [6:1.00] 1974; SLM-NEXT: #NO_APP 1975; SLM-NEXT: retl # sched: [4:1.00] 1976; 1977; SANDY-LABEL: test_ficom: 1978; SANDY: # %bb.0: 1979; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1980; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1981; SANDY-NEXT: #APP 1982; SANDY-NEXT: ficoms (%ecx) # sched: [11:2.00] 1983; SANDY-NEXT: ficoml (%eax) # sched: [11:2.00] 1984; SANDY-NEXT: ficomps (%ecx) # sched: [11:2.00] 1985; SANDY-NEXT: ficompl (%eax) # sched: [11:2.00] 1986; SANDY-NEXT: #NO_APP 1987; SANDY-NEXT: retl # sched: [6:1.00] 1988; 1989; HASWELL-LABEL: test_ficom: 1990; HASWELL: # %bb.0: 1991; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 1992; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 1993; HASWELL-NEXT: #APP 1994; HASWELL-NEXT: ficoms (%ecx) # sched: [11:2.00] 1995; HASWELL-NEXT: ficoml (%eax) # sched: [11:2.00] 1996; HASWELL-NEXT: ficomps (%ecx) # sched: [11:2.00] 1997; HASWELL-NEXT: ficompl (%eax) # sched: [11:2.00] 1998; HASWELL-NEXT: #NO_APP 1999; HASWELL-NEXT: retl # sched: [7:1.00] 2000; 2001; BROADWELL-LABEL: test_ficom: 2002; BROADWELL: # %bb.0: 2003; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2004; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2005; BROADWELL-NEXT: #APP 2006; BROADWELL-NEXT: ficoms (%ecx) # sched: [10:2.00] 2007; BROADWELL-NEXT: ficoml (%eax) # sched: [10:2.00] 2008; BROADWELL-NEXT: ficomps (%ecx) # sched: [10:2.00] 2009; BROADWELL-NEXT: ficompl (%eax) # sched: [10:2.00] 2010; BROADWELL-NEXT: #NO_APP 2011; BROADWELL-NEXT: retl # sched: [6:0.50] 2012; 2013; SKYLAKE-LABEL: test_ficom: 2014; SKYLAKE: # %bb.0: 2015; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2016; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2017; SKYLAKE-NEXT: #APP 2018; SKYLAKE-NEXT: ficoms (%ecx) # sched: [11:2.00] 2019; SKYLAKE-NEXT: ficoml (%eax) # sched: [11:2.00] 2020; SKYLAKE-NEXT: ficomps (%ecx) # sched: [11:2.00] 2021; SKYLAKE-NEXT: ficompl (%eax) # sched: [11:2.00] 2022; SKYLAKE-NEXT: #NO_APP 2023; SKYLAKE-NEXT: retl # sched: [6:0.50] 2024; 2025; SKX-LABEL: test_ficom: 2026; SKX: # %bb.0: 2027; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2028; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2029; SKX-NEXT: #APP 2030; SKX-NEXT: ficoms (%ecx) # sched: [11:2.00] 2031; SKX-NEXT: ficoml (%eax) # sched: [11:2.00] 2032; SKX-NEXT: ficomps (%ecx) # sched: [11:2.00] 2033; SKX-NEXT: ficompl (%eax) # sched: [11:2.00] 2034; SKX-NEXT: #NO_APP 2035; SKX-NEXT: retl # sched: [6:0.50] 2036; 2037; BTVER2-LABEL: test_ficom: 2038; BTVER2: # %bb.0: 2039; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2040; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 2041; BTVER2-NEXT: #APP 2042; BTVER2-NEXT: ficoms (%ecx) # sched: [8:1.00] 2043; BTVER2-NEXT: ficoml (%eax) # sched: [8:1.00] 2044; BTVER2-NEXT: ficomps (%ecx) # sched: [8:1.00] 2045; BTVER2-NEXT: ficompl (%eax) # sched: [8:1.00] 2046; BTVER2-NEXT: #NO_APP 2047; BTVER2-NEXT: retl # sched: [4:1.00] 2048; 2049; ZNVER1-LABEL: test_ficom: 2050; ZNVER1: # %bb.0: 2051; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2052; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 2053; ZNVER1-NEXT: #APP 2054; ZNVER1-NEXT: ficoms (%ecx) # sched: [12:1.50] 2055; ZNVER1-NEXT: ficoml (%eax) # sched: [12:1.50] 2056; ZNVER1-NEXT: ficomps (%ecx) # sched: [12:1.50] 2057; ZNVER1-NEXT: ficompl (%eax) # sched: [12:1.50] 2058; ZNVER1-NEXT: #NO_APP 2059; ZNVER1-NEXT: retl # sched: [1:0.50] 2060 tail call void asm sideeffect "ficoms $0 \0A\09 ficoml $1 \0A\09 ficomps $0 \0A\09 ficompl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 2061 ret void 2062} 2063 2064define void @test_fild(i16 *%a0, i32 *%a1, i64 *%a2) optsize { 2065; GENERIC-LABEL: test_fild: 2066; GENERIC: # %bb.0: 2067; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2068; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2069; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx 2070; GENERIC-NEXT: #APP 2071; GENERIC-NEXT: filds (%edx) 2072; GENERIC-NEXT: fildl (%ecx) 2073; GENERIC-NEXT: fildll (%eax) 2074; GENERIC-NEXT: #NO_APP 2075; GENERIC-NEXT: retl 2076; 2077; ATOM-LABEL: test_fild: 2078; ATOM: # %bb.0: 2079; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2080; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 2081; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] 2082; ATOM-NEXT: #APP 2083; ATOM-NEXT: filds (%edx) # sched: [5:5.00] 2084; ATOM-NEXT: fildl (%ecx) # sched: [5:5.00] 2085; ATOM-NEXT: fildll (%eax) # sched: [5:5.00] 2086; ATOM-NEXT: #NO_APP 2087; ATOM-NEXT: retl # sched: [79:39.50] 2088; 2089; SLM-LABEL: test_fild: 2090; SLM: # %bb.0: 2091; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2092; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 2093; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] 2094; SLM-NEXT: #APP 2095; SLM-NEXT: filds (%edx) # sched: [3:1.00] 2096; SLM-NEXT: fildl (%ecx) # sched: [3:1.00] 2097; SLM-NEXT: fildll (%eax) # sched: [3:1.00] 2098; SLM-NEXT: #NO_APP 2099; SLM-NEXT: retl # sched: [4:1.00] 2100; 2101; SANDY-LABEL: test_fild: 2102; SANDY: # %bb.0: 2103; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2104; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2105; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2106; SANDY-NEXT: #APP 2107; SANDY-NEXT: filds (%edx) # sched: [10:1.00] 2108; SANDY-NEXT: fildl (%ecx) # sched: [10:1.00] 2109; SANDY-NEXT: fildll (%eax) # sched: [10:1.00] 2110; SANDY-NEXT: #NO_APP 2111; SANDY-NEXT: retl # sched: [6:1.00] 2112; 2113; HASWELL-LABEL: test_fild: 2114; HASWELL: # %bb.0: 2115; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2116; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2117; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2118; HASWELL-NEXT: #APP 2119; HASWELL-NEXT: filds (%edx) # sched: [10:1.00] 2120; HASWELL-NEXT: fildl (%ecx) # sched: [10:1.00] 2121; HASWELL-NEXT: fildll (%eax) # sched: [10:1.00] 2122; HASWELL-NEXT: #NO_APP 2123; HASWELL-NEXT: retl # sched: [7:1.00] 2124; 2125; BROADWELL-LABEL: test_fild: 2126; BROADWELL: # %bb.0: 2127; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2128; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2129; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2130; BROADWELL-NEXT: #APP 2131; BROADWELL-NEXT: filds (%edx) # sched: [9:1.00] 2132; BROADWELL-NEXT: fildl (%ecx) # sched: [9:1.00] 2133; BROADWELL-NEXT: fildll (%eax) # sched: [9:1.00] 2134; BROADWELL-NEXT: #NO_APP 2135; BROADWELL-NEXT: retl # sched: [6:0.50] 2136; 2137; SKYLAKE-LABEL: test_fild: 2138; SKYLAKE: # %bb.0: 2139; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2140; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2141; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2142; SKYLAKE-NEXT: #APP 2143; SKYLAKE-NEXT: filds (%edx) # sched: [10:1.00] 2144; SKYLAKE-NEXT: fildl (%ecx) # sched: [10:1.00] 2145; SKYLAKE-NEXT: fildll (%eax) # sched: [10:1.00] 2146; SKYLAKE-NEXT: #NO_APP 2147; SKYLAKE-NEXT: retl # sched: [6:0.50] 2148; 2149; SKX-LABEL: test_fild: 2150; SKX: # %bb.0: 2151; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2152; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2153; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2154; SKX-NEXT: #APP 2155; SKX-NEXT: filds (%edx) # sched: [10:1.00] 2156; SKX-NEXT: fildl (%ecx) # sched: [10:1.00] 2157; SKX-NEXT: fildll (%eax) # sched: [10:1.00] 2158; SKX-NEXT: #NO_APP 2159; SKX-NEXT: retl # sched: [6:0.50] 2160; 2161; BTVER2-LABEL: test_fild: 2162; BTVER2: # %bb.0: 2163; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2164; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 2165; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] 2166; BTVER2-NEXT: #APP 2167; BTVER2-NEXT: filds (%edx) # sched: [5:1.00] 2168; BTVER2-NEXT: fildl (%ecx) # sched: [5:1.00] 2169; BTVER2-NEXT: fildll (%eax) # sched: [5:1.00] 2170; BTVER2-NEXT: #NO_APP 2171; BTVER2-NEXT: retl # sched: [4:1.00] 2172; 2173; ZNVER1-LABEL: test_fild: 2174; ZNVER1: # %bb.0: 2175; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2176; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 2177; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] 2178; ZNVER1-NEXT: #APP 2179; ZNVER1-NEXT: filds (%edx) # sched: [11:1.00] 2180; ZNVER1-NEXT: fildl (%ecx) # sched: [11:1.00] 2181; ZNVER1-NEXT: fildll (%eax) # sched: [11:1.00] 2182; ZNVER1-NEXT: #NO_APP 2183; ZNVER1-NEXT: retl # sched: [1:0.50] 2184 tail call void asm sideeffect "filds $0 \0A\09 fildl $1 \0A\09 fildll $2", "*m,*m,*m"(i16 *%a0, i32 *%a1, i64 *%a2) nounwind 2185 ret void 2186} 2187 2188define void @test_fincstp() optsize { 2189; GENERIC-LABEL: test_fincstp: 2190; GENERIC: # %bb.0: 2191; GENERIC-NEXT: #APP 2192; GENERIC-NEXT: fincstp 2193; GENERIC-NEXT: #NO_APP 2194; GENERIC-NEXT: retl 2195; 2196; ATOM-LABEL: test_fincstp: 2197; ATOM: # %bb.0: 2198; ATOM-NEXT: #APP 2199; ATOM-NEXT: fincstp # sched: [1:0.50] 2200; ATOM-NEXT: #NO_APP 2201; ATOM-NEXT: retl # sched: [79:39.50] 2202; 2203; SLM-LABEL: test_fincstp: 2204; SLM: # %bb.0: 2205; SLM-NEXT: #APP 2206; SLM-NEXT: fincstp # sched: [100:1.00] 2207; SLM-NEXT: #NO_APP 2208; SLM-NEXT: retl # sched: [4:1.00] 2209; 2210; SANDY-LABEL: test_fincstp: 2211; SANDY: # %bb.0: 2212; SANDY-NEXT: #APP 2213; SANDY-NEXT: fincstp # sched: [1:1.00] 2214; SANDY-NEXT: #NO_APP 2215; SANDY-NEXT: retl # sched: [6:1.00] 2216; 2217; HASWELL-LABEL: test_fincstp: 2218; HASWELL: # %bb.0: 2219; HASWELL-NEXT: #APP 2220; HASWELL-NEXT: fincstp # sched: [1:0.50] 2221; HASWELL-NEXT: #NO_APP 2222; HASWELL-NEXT: retl # sched: [7:1.00] 2223; 2224; BROADWELL-LABEL: test_fincstp: 2225; BROADWELL: # %bb.0: 2226; BROADWELL-NEXT: #APP 2227; BROADWELL-NEXT: fincstp # sched: [1:0.50] 2228; BROADWELL-NEXT: #NO_APP 2229; BROADWELL-NEXT: retl # sched: [6:0.50] 2230; 2231; SKYLAKE-LABEL: test_fincstp: 2232; SKYLAKE: # %bb.0: 2233; SKYLAKE-NEXT: #APP 2234; SKYLAKE-NEXT: fincstp # sched: [1:0.50] 2235; SKYLAKE-NEXT: #NO_APP 2236; SKYLAKE-NEXT: retl # sched: [6:0.50] 2237; 2238; SKX-LABEL: test_fincstp: 2239; SKX: # %bb.0: 2240; SKX-NEXT: #APP 2241; SKX-NEXT: fincstp # sched: [1:0.50] 2242; SKX-NEXT: #NO_APP 2243; SKX-NEXT: retl # sched: [6:0.50] 2244; 2245; BTVER2-LABEL: test_fincstp: 2246; BTVER2: # %bb.0: 2247; BTVER2-NEXT: #APP 2248; BTVER2-NEXT: fincstp # sched: [100:0.50] 2249; BTVER2-NEXT: #NO_APP 2250; BTVER2-NEXT: retl # sched: [4:1.00] 2251; 2252; ZNVER1-LABEL: test_fincstp: 2253; ZNVER1: # %bb.0: 2254; ZNVER1-NEXT: #APP 2255; ZNVER1-NEXT: fincstp # sched: [11:1.00] 2256; ZNVER1-NEXT: #NO_APP 2257; ZNVER1-NEXT: retl # sched: [1:0.50] 2258 tail call void asm sideeffect "fincstp", ""() nounwind 2259 ret void 2260} 2261 2262define void @test_finit() optsize { 2263; GENERIC-LABEL: test_finit: 2264; GENERIC: # %bb.0: 2265; GENERIC-NEXT: #APP 2266; GENERIC-NEXT: wait 2267; GENERIC-NEXT: fninit 2268; GENERIC-NEXT: #NO_APP 2269; GENERIC-NEXT: retl 2270; 2271; ATOM-LABEL: test_finit: 2272; ATOM: # %bb.0: 2273; ATOM-NEXT: #APP 2274; ATOM-NEXT: wait # sched: [1:0.50] 2275; ATOM-NEXT: fninit # sched: [63:31.50] 2276; ATOM-NEXT: #NO_APP 2277; ATOM-NEXT: retl # sched: [79:39.50] 2278; 2279; SLM-LABEL: test_finit: 2280; SLM: # %bb.0: 2281; SLM-NEXT: #APP 2282; SLM-NEXT: wait # sched: [100:1.00] 2283; SLM-NEXT: fninit # sched: [100:1.00] 2284; SLM-NEXT: #NO_APP 2285; SLM-NEXT: retl # sched: [4:1.00] 2286; 2287; SANDY-LABEL: test_finit: 2288; SANDY: # %bb.0: 2289; SANDY-NEXT: #APP 2290; SANDY-NEXT: wait # sched: [100:0.33] 2291; SANDY-NEXT: fninit # sched: [5:1.33] 2292; SANDY-NEXT: #NO_APP 2293; SANDY-NEXT: retl # sched: [6:1.00] 2294; 2295; HASWELL-LABEL: test_finit: 2296; HASWELL: # %bb.0: 2297; HASWELL-NEXT: #APP 2298; HASWELL-NEXT: wait # sched: [2:0.50] 2299; HASWELL-NEXT: fninit # sched: [75:6.00] 2300; HASWELL-NEXT: #NO_APP 2301; HASWELL-NEXT: retl # sched: [7:1.00] 2302; 2303; BROADWELL-LABEL: test_finit: 2304; BROADWELL: # %bb.0: 2305; BROADWELL-NEXT: #APP 2306; BROADWELL-NEXT: wait # sched: [2:0.50] 2307; BROADWELL-NEXT: fninit # sched: [75:6.00] 2308; BROADWELL-NEXT: #NO_APP 2309; BROADWELL-NEXT: retl # sched: [6:0.50] 2310; 2311; SKYLAKE-LABEL: test_finit: 2312; SKYLAKE: # %bb.0: 2313; SKYLAKE-NEXT: #APP 2314; SKYLAKE-NEXT: wait # sched: [2:0.50] 2315; SKYLAKE-NEXT: fninit # sched: [75:6.00] 2316; SKYLAKE-NEXT: #NO_APP 2317; SKYLAKE-NEXT: retl # sched: [6:0.50] 2318; 2319; SKX-LABEL: test_finit: 2320; SKX: # %bb.0: 2321; SKX-NEXT: #APP 2322; SKX-NEXT: wait # sched: [2:0.50] 2323; SKX-NEXT: fninit # sched: [75:6.00] 2324; SKX-NEXT: #NO_APP 2325; SKX-NEXT: retl # sched: [6:0.50] 2326; 2327; BTVER2-LABEL: test_finit: 2328; BTVER2: # %bb.0: 2329; BTVER2-NEXT: #APP 2330; BTVER2-NEXT: wait # sched: [100:0.50] 2331; BTVER2-NEXT: fninit # sched: [100:0.50] 2332; BTVER2-NEXT: #NO_APP 2333; BTVER2-NEXT: retl # sched: [4:1.00] 2334; 2335; ZNVER1-LABEL: test_finit: 2336; ZNVER1: # %bb.0: 2337; ZNVER1-NEXT: #APP 2338; ZNVER1-NEXT: wait # sched: [1:1.00] 2339; ZNVER1-NEXT: fninit # sched: [100:0.25] 2340; ZNVER1-NEXT: #NO_APP 2341; ZNVER1-NEXT: retl # sched: [1:0.50] 2342 tail call void asm sideeffect "finit", ""() nounwind 2343 ret void 2344} 2345 2346define void @test_fninit() optsize { 2347; GENERIC-LABEL: test_fninit: 2348; GENERIC: # %bb.0: 2349; GENERIC-NEXT: #APP 2350; GENERIC-NEXT: fninit 2351; GENERIC-NEXT: #NO_APP 2352; GENERIC-NEXT: retl 2353; 2354; ATOM-LABEL: test_fninit: 2355; ATOM: # %bb.0: 2356; ATOM-NEXT: #APP 2357; ATOM-NEXT: fninit # sched: [63:31.50] 2358; ATOM-NEXT: #NO_APP 2359; ATOM-NEXT: retl # sched: [79:39.50] 2360; 2361; SLM-LABEL: test_fninit: 2362; SLM: # %bb.0: 2363; SLM-NEXT: #APP 2364; SLM-NEXT: fninit # sched: [100:1.00] 2365; SLM-NEXT: #NO_APP 2366; SLM-NEXT: retl # sched: [4:1.00] 2367; 2368; SANDY-LABEL: test_fninit: 2369; SANDY: # %bb.0: 2370; SANDY-NEXT: #APP 2371; SANDY-NEXT: fninit # sched: [5:1.33] 2372; SANDY-NEXT: #NO_APP 2373; SANDY-NEXT: retl # sched: [6:1.00] 2374; 2375; HASWELL-LABEL: test_fninit: 2376; HASWELL: # %bb.0: 2377; HASWELL-NEXT: #APP 2378; HASWELL-NEXT: fninit # sched: [75:6.00] 2379; HASWELL-NEXT: #NO_APP 2380; HASWELL-NEXT: retl # sched: [7:1.00] 2381; 2382; BROADWELL-LABEL: test_fninit: 2383; BROADWELL: # %bb.0: 2384; BROADWELL-NEXT: #APP 2385; BROADWELL-NEXT: fninit # sched: [75:6.00] 2386; BROADWELL-NEXT: #NO_APP 2387; BROADWELL-NEXT: retl # sched: [6:0.50] 2388; 2389; SKYLAKE-LABEL: test_fninit: 2390; SKYLAKE: # %bb.0: 2391; SKYLAKE-NEXT: #APP 2392; SKYLAKE-NEXT: fninit # sched: [75:6.00] 2393; SKYLAKE-NEXT: #NO_APP 2394; SKYLAKE-NEXT: retl # sched: [6:0.50] 2395; 2396; SKX-LABEL: test_fninit: 2397; SKX: # %bb.0: 2398; SKX-NEXT: #APP 2399; SKX-NEXT: fninit # sched: [75:6.00] 2400; SKX-NEXT: #NO_APP 2401; SKX-NEXT: retl # sched: [6:0.50] 2402; 2403; BTVER2-LABEL: test_fninit: 2404; BTVER2: # %bb.0: 2405; BTVER2-NEXT: #APP 2406; BTVER2-NEXT: fninit # sched: [100:0.50] 2407; BTVER2-NEXT: #NO_APP 2408; BTVER2-NEXT: retl # sched: [4:1.00] 2409; 2410; ZNVER1-LABEL: test_fninit: 2411; ZNVER1: # %bb.0: 2412; ZNVER1-NEXT: #APP 2413; ZNVER1-NEXT: fninit # sched: [100:0.25] 2414; ZNVER1-NEXT: #NO_APP 2415; ZNVER1-NEXT: retl # sched: [1:0.50] 2416 tail call void asm sideeffect "fninit", ""() nounwind 2417 ret void 2418} 2419 2420define void @test_fist_fistp_fisttp(i16* %a0, i32* %a1, i64 *%a2) optsize { 2421; GENERIC-LABEL: test_fist_fistp_fisttp: 2422; GENERIC: # %bb.0: 2423; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2424; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2425; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx 2426; GENERIC-NEXT: #APP 2427; GENERIC-NEXT: fists (%edx) 2428; GENERIC-NEXT: fistl (%ecx) 2429; GENERIC-NEXT: fistps (%edx) 2430; GENERIC-NEXT: fistpl (%ecx) 2431; GENERIC-NEXT: fistpll (%eax) 2432; GENERIC-NEXT: fisttps (%edx) 2433; GENERIC-NEXT: fisttpl (%ecx) 2434; GENERIC-NEXT: fisttpll (%eax) 2435; GENERIC-NEXT: #NO_APP 2436; GENERIC-NEXT: retl 2437; 2438; ATOM-LABEL: test_fist_fistp_fisttp: 2439; ATOM: # %bb.0: 2440; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2441; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 2442; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] 2443; ATOM-NEXT: #APP 2444; ATOM-NEXT: fists (%edx) # sched: [6:3.00] 2445; ATOM-NEXT: fistl (%ecx) # sched: [6:3.00] 2446; ATOM-NEXT: fistps (%edx) # sched: [6:3.00] 2447; ATOM-NEXT: fistpl (%ecx) # sched: [6:3.00] 2448; ATOM-NEXT: fistpll (%eax) # sched: [6:3.00] 2449; ATOM-NEXT: fisttps (%edx) # sched: [2:1.00] 2450; ATOM-NEXT: fisttpl (%ecx) # sched: [2:1.00] 2451; ATOM-NEXT: fisttpll (%eax) # sched: [2:1.00] 2452; ATOM-NEXT: #NO_APP 2453; ATOM-NEXT: retl # sched: [79:39.50] 2454; 2455; SLM-LABEL: test_fist_fistp_fisttp: 2456; SLM: # %bb.0: 2457; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2458; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 2459; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] 2460; SLM-NEXT: #APP 2461; SLM-NEXT: fists (%edx) # sched: [1:1.00] 2462; SLM-NEXT: fistl (%ecx) # sched: [1:1.00] 2463; SLM-NEXT: fistps (%edx) # sched: [1:1.00] 2464; SLM-NEXT: fistpl (%ecx) # sched: [1:1.00] 2465; SLM-NEXT: fistpll (%eax) # sched: [1:1.00] 2466; SLM-NEXT: fisttps (%edx) # sched: [1:1.00] 2467; SLM-NEXT: fisttpl (%ecx) # sched: [1:1.00] 2468; SLM-NEXT: fisttpll (%eax) # sched: [1:1.00] 2469; SLM-NEXT: #NO_APP 2470; SLM-NEXT: retl # sched: [4:1.00] 2471; 2472; SANDY-LABEL: test_fist_fistp_fisttp: 2473; SANDY: # %bb.0: 2474; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2475; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2476; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2477; SANDY-NEXT: #APP 2478; SANDY-NEXT: fists (%edx) # sched: [9:1.00] 2479; SANDY-NEXT: fistl (%ecx) # sched: [9:1.00] 2480; SANDY-NEXT: fistps (%edx) # sched: [9:1.00] 2481; SANDY-NEXT: fistpl (%ecx) # sched: [9:1.00] 2482; SANDY-NEXT: fistpll (%eax) # sched: [9:1.00] 2483; SANDY-NEXT: fisttps (%edx) # sched: [5:1.00] 2484; SANDY-NEXT: fisttpl (%ecx) # sched: [5:1.00] 2485; SANDY-NEXT: fisttpll (%eax) # sched: [5:1.00] 2486; SANDY-NEXT: #NO_APP 2487; SANDY-NEXT: retl # sched: [6:1.00] 2488; 2489; HASWELL-LABEL: test_fist_fistp_fisttp: 2490; HASWELL: # %bb.0: 2491; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2492; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2493; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2494; HASWELL-NEXT: #APP 2495; HASWELL-NEXT: fists (%edx) # sched: [4:1.00] 2496; HASWELL-NEXT: fistl (%ecx) # sched: [4:1.00] 2497; HASWELL-NEXT: fistps (%edx) # sched: [4:1.00] 2498; HASWELL-NEXT: fistpl (%ecx) # sched: [4:1.00] 2499; HASWELL-NEXT: fistpll (%eax) # sched: [4:1.00] 2500; HASWELL-NEXT: fisttps (%edx) # sched: [4:1.00] 2501; HASWELL-NEXT: fisttpl (%ecx) # sched: [4:1.00] 2502; HASWELL-NEXT: fisttpll (%eax) # sched: [4:1.00] 2503; HASWELL-NEXT: #NO_APP 2504; HASWELL-NEXT: retl # sched: [7:1.00] 2505; 2506; BROADWELL-LABEL: test_fist_fistp_fisttp: 2507; BROADWELL: # %bb.0: 2508; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2509; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2510; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2511; BROADWELL-NEXT: #APP 2512; BROADWELL-NEXT: fists (%edx) # sched: [4:1.00] 2513; BROADWELL-NEXT: fistl (%ecx) # sched: [4:1.00] 2514; BROADWELL-NEXT: fistps (%edx) # sched: [4:1.00] 2515; BROADWELL-NEXT: fistpl (%ecx) # sched: [4:1.00] 2516; BROADWELL-NEXT: fistpll (%eax) # sched: [4:1.00] 2517; BROADWELL-NEXT: fisttps (%edx) # sched: [4:1.00] 2518; BROADWELL-NEXT: fisttpl (%ecx) # sched: [4:1.00] 2519; BROADWELL-NEXT: fisttpll (%eax) # sched: [4:1.00] 2520; BROADWELL-NEXT: #NO_APP 2521; BROADWELL-NEXT: retl # sched: [6:0.50] 2522; 2523; SKYLAKE-LABEL: test_fist_fistp_fisttp: 2524; SKYLAKE: # %bb.0: 2525; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2526; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2527; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2528; SKYLAKE-NEXT: #APP 2529; SKYLAKE-NEXT: fists (%edx) # sched: [4:1.00] 2530; SKYLAKE-NEXT: fistl (%ecx) # sched: [4:1.00] 2531; SKYLAKE-NEXT: fistps (%edx) # sched: [4:1.00] 2532; SKYLAKE-NEXT: fistpl (%ecx) # sched: [4:1.00] 2533; SKYLAKE-NEXT: fistpll (%eax) # sched: [4:1.00] 2534; SKYLAKE-NEXT: fisttps (%edx) # sched: [4:1.00] 2535; SKYLAKE-NEXT: fisttpl (%ecx) # sched: [4:1.00] 2536; SKYLAKE-NEXT: fisttpll (%eax) # sched: [4:1.00] 2537; SKYLAKE-NEXT: #NO_APP 2538; SKYLAKE-NEXT: retl # sched: [6:0.50] 2539; 2540; SKX-LABEL: test_fist_fistp_fisttp: 2541; SKX: # %bb.0: 2542; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2543; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2544; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2545; SKX-NEXT: #APP 2546; SKX-NEXT: fists (%edx) # sched: [4:1.00] 2547; SKX-NEXT: fistl (%ecx) # sched: [4:1.00] 2548; SKX-NEXT: fistps (%edx) # sched: [4:1.00] 2549; SKX-NEXT: fistpl (%ecx) # sched: [4:1.00] 2550; SKX-NEXT: fistpll (%eax) # sched: [4:1.00] 2551; SKX-NEXT: fisttps (%edx) # sched: [4:1.00] 2552; SKX-NEXT: fisttpl (%ecx) # sched: [4:1.00] 2553; SKX-NEXT: fisttpll (%eax) # sched: [4:1.00] 2554; SKX-NEXT: #NO_APP 2555; SKX-NEXT: retl # sched: [6:0.50] 2556; 2557; BTVER2-LABEL: test_fist_fistp_fisttp: 2558; BTVER2: # %bb.0: 2559; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2560; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 2561; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] 2562; BTVER2-NEXT: #APP 2563; BTVER2-NEXT: fists (%edx) # sched: [1:1.00] 2564; BTVER2-NEXT: fistl (%ecx) # sched: [1:1.00] 2565; BTVER2-NEXT: fistps (%edx) # sched: [1:1.00] 2566; BTVER2-NEXT: fistpl (%ecx) # sched: [1:1.00] 2567; BTVER2-NEXT: fistpll (%eax) # sched: [1:1.00] 2568; BTVER2-NEXT: fisttps (%edx) # sched: [1:1.00] 2569; BTVER2-NEXT: fisttpl (%ecx) # sched: [1:1.00] 2570; BTVER2-NEXT: fisttpll (%eax) # sched: [1:1.00] 2571; BTVER2-NEXT: #NO_APP 2572; BTVER2-NEXT: retl # sched: [4:1.00] 2573; 2574; ZNVER1-LABEL: test_fist_fistp_fisttp: 2575; ZNVER1: # %bb.0: 2576; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2577; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 2578; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] 2579; ZNVER1-NEXT: #APP 2580; ZNVER1-NEXT: fists (%edx) # sched: [12:0.50] 2581; ZNVER1-NEXT: fistl (%ecx) # sched: [12:0.50] 2582; ZNVER1-NEXT: fistps (%edx) # sched: [12:0.50] 2583; ZNVER1-NEXT: fistpl (%ecx) # sched: [12:0.50] 2584; ZNVER1-NEXT: fistpll (%eax) # sched: [12:0.50] 2585; ZNVER1-NEXT: fisttps (%edx) # sched: [12:0.50] 2586; ZNVER1-NEXT: fisttpl (%ecx) # sched: [12:0.50] 2587; ZNVER1-NEXT: fisttpll (%eax) # sched: [12:0.50] 2588; ZNVER1-NEXT: #NO_APP 2589; ZNVER1-NEXT: retl # sched: [1:0.50] 2590 tail call void asm sideeffect "fists $0 \0A\09 fistl $1 \0A\09 fistps $0 \0A\09 fistpl $1 \0A\09 fistpll $2 \0A\09 fisttps $0 \0A\09 fisttpl $1 \0A\09 fisttpll $2", "*m,*m,*m"(i16* %a0, i32* %a1, i64 *%a2) nounwind 2591 ret void 2592} 2593 2594define void @test_fld(i16* %a0, i32* %a1, i64 *%a2) optsize { 2595; GENERIC-LABEL: test_fld: 2596; GENERIC: # %bb.0: 2597; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2598; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2599; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx 2600; GENERIC-NEXT: #APP 2601; GENERIC-NEXT: fld %st(0) 2602; GENERIC-NEXT: flds (%edx) 2603; GENERIC-NEXT: fldl (%ecx) 2604; GENERIC-NEXT: fldt (%eax) 2605; GENERIC-NEXT: #NO_APP 2606; GENERIC-NEXT: retl 2607; 2608; ATOM-LABEL: test_fld: 2609; ATOM: # %bb.0: 2610; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2611; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 2612; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] 2613; ATOM-NEXT: #APP 2614; ATOM-NEXT: fld %st(0) # sched: [1:1.00] 2615; ATOM-NEXT: flds (%edx) # sched: [1:1.00] 2616; ATOM-NEXT: fldl (%ecx) # sched: [1:1.00] 2617; ATOM-NEXT: fldt (%eax) # sched: [4:2.00] 2618; ATOM-NEXT: #NO_APP 2619; ATOM-NEXT: retl # sched: [79:39.50] 2620; 2621; SLM-LABEL: test_fld: 2622; SLM: # %bb.0: 2623; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2624; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 2625; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] 2626; SLM-NEXT: #APP 2627; SLM-NEXT: fld %st(0) # sched: [1:0.50] 2628; SLM-NEXT: flds (%edx) # sched: [3:1.00] 2629; SLM-NEXT: fldl (%ecx) # sched: [3:1.00] 2630; SLM-NEXT: fldt (%eax) # sched: [3:1.00] 2631; SLM-NEXT: #NO_APP 2632; SLM-NEXT: retl # sched: [4:1.00] 2633; 2634; SANDY-LABEL: test_fld: 2635; SANDY: # %bb.0: 2636; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2637; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2638; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2639; SANDY-NEXT: #APP 2640; SANDY-NEXT: fld %st(0) # sched: [1:1.00] 2641; SANDY-NEXT: flds (%edx) # sched: [9:1.00] 2642; SANDY-NEXT: fldl (%ecx) # sched: [9:1.00] 2643; SANDY-NEXT: fldt (%eax) # sched: [9:1.00] 2644; SANDY-NEXT: #NO_APP 2645; SANDY-NEXT: retl # sched: [6:1.00] 2646; 2647; HASWELL-LABEL: test_fld: 2648; HASWELL: # %bb.0: 2649; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2650; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2651; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2652; HASWELL-NEXT: #APP 2653; HASWELL-NEXT: fld %st(0) # sched: [1:0.50] 2654; HASWELL-NEXT: flds (%edx) # sched: [7:0.50] 2655; HASWELL-NEXT: fldl (%ecx) # sched: [7:0.50] 2656; HASWELL-NEXT: fldt (%eax) # sched: [7:0.50] 2657; HASWELL-NEXT: #NO_APP 2658; HASWELL-NEXT: retl # sched: [7:1.00] 2659; 2660; BROADWELL-LABEL: test_fld: 2661; BROADWELL: # %bb.0: 2662; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2663; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2664; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2665; BROADWELL-NEXT: #APP 2666; BROADWELL-NEXT: fld %st(0) # sched: [1:0.25] 2667; BROADWELL-NEXT: flds (%edx) # sched: [6:0.50] 2668; BROADWELL-NEXT: fldl (%ecx) # sched: [6:0.50] 2669; BROADWELL-NEXT: fldt (%eax) # sched: [6:0.50] 2670; BROADWELL-NEXT: #NO_APP 2671; BROADWELL-NEXT: retl # sched: [6:0.50] 2672; 2673; SKYLAKE-LABEL: test_fld: 2674; SKYLAKE: # %bb.0: 2675; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2676; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2677; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2678; SKYLAKE-NEXT: #APP 2679; SKYLAKE-NEXT: fld %st(0) # sched: [1:0.25] 2680; SKYLAKE-NEXT: flds (%edx) # sched: [7:0.50] 2681; SKYLAKE-NEXT: fldl (%ecx) # sched: [7:0.50] 2682; SKYLAKE-NEXT: fldt (%eax) # sched: [7:0.50] 2683; SKYLAKE-NEXT: #NO_APP 2684; SKYLAKE-NEXT: retl # sched: [6:0.50] 2685; 2686; SKX-LABEL: test_fld: 2687; SKX: # %bb.0: 2688; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2689; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2690; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 2691; SKX-NEXT: #APP 2692; SKX-NEXT: fld %st(0) # sched: [1:0.25] 2693; SKX-NEXT: flds (%edx) # sched: [7:0.50] 2694; SKX-NEXT: fldl (%ecx) # sched: [7:0.50] 2695; SKX-NEXT: fldt (%eax) # sched: [7:0.50] 2696; SKX-NEXT: #NO_APP 2697; SKX-NEXT: retl # sched: [6:0.50] 2698; 2699; BTVER2-LABEL: test_fld: 2700; BTVER2: # %bb.0: 2701; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2702; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 2703; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] 2704; BTVER2-NEXT: #APP 2705; BTVER2-NEXT: fld %st(0) # sched: [1:0.50] 2706; BTVER2-NEXT: flds (%edx) # sched: [5:1.00] 2707; BTVER2-NEXT: fldl (%ecx) # sched: [5:1.00] 2708; BTVER2-NEXT: fldt (%eax) # sched: [5:1.00] 2709; BTVER2-NEXT: #NO_APP 2710; BTVER2-NEXT: retl # sched: [4:1.00] 2711; 2712; ZNVER1-LABEL: test_fld: 2713; ZNVER1: # %bb.0: 2714; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2715; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 2716; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] 2717; ZNVER1-NEXT: #APP 2718; ZNVER1-NEXT: fld %st(0) # sched: [1:0.50] 2719; ZNVER1-NEXT: flds (%edx) # sched: [8:0.50] 2720; ZNVER1-NEXT: fldl (%ecx) # sched: [8:0.50] 2721; ZNVER1-NEXT: fldt (%eax) # sched: [1:0.50] 2722; ZNVER1-NEXT: #NO_APP 2723; ZNVER1-NEXT: retl # sched: [1:0.50] 2724 tail call void asm sideeffect "fld %st(0) \0A\09 flds $0 \0A\09 fldl $1 \0A\09 fldt $2", "*m,*m,*m"(i16* %a0, i32* %a1, i64 *%a2) nounwind 2725 ret void 2726} 2727 2728define void @test_fldcw_fldenv(i8* %a0) optsize { 2729; GENERIC-LABEL: test_fldcw_fldenv: 2730; GENERIC: # %bb.0: 2731; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2732; GENERIC-NEXT: #APP 2733; GENERIC-NEXT: fldcw (%eax) 2734; GENERIC-NEXT: fldenv (%eax) 2735; GENERIC-NEXT: #NO_APP 2736; GENERIC-NEXT: retl 2737; 2738; ATOM-LABEL: test_fldcw_fldenv: 2739; ATOM: # %bb.0: 2740; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2741; ATOM-NEXT: #APP 2742; ATOM-NEXT: fldcw (%eax) # sched: [5:2.50] 2743; ATOM-NEXT: fldenv (%eax) # sched: [100:0.50] 2744; ATOM-NEXT: #NO_APP 2745; ATOM-NEXT: retl # sched: [79:39.50] 2746; 2747; SLM-LABEL: test_fldcw_fldenv: 2748; SLM: # %bb.0: 2749; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2750; SLM-NEXT: #APP 2751; SLM-NEXT: fldcw (%eax) # sched: [3:1.00] 2752; SLM-NEXT: fldenv (%eax) # sched: [100:1.00] 2753; SLM-NEXT: #NO_APP 2754; SLM-NEXT: retl # sched: [4:1.00] 2755; 2756; SANDY-LABEL: test_fldcw_fldenv: 2757; SANDY: # %bb.0: 2758; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2759; SANDY-NEXT: #APP 2760; SANDY-NEXT: fldcw (%eax) # sched: [8:2.00] 2761; SANDY-NEXT: fldenv (%eax) # sched: [100:0.33] 2762; SANDY-NEXT: #NO_APP 2763; SANDY-NEXT: retl # sched: [6:1.00] 2764; 2765; HASWELL-LABEL: test_fldcw_fldenv: 2766; HASWELL: # %bb.0: 2767; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2768; HASWELL-NEXT: #APP 2769; HASWELL-NEXT: fldcw (%eax) # sched: [7:1.00] 2770; HASWELL-NEXT: fldenv (%eax) # sched: [61:14.00] 2771; HASWELL-NEXT: #NO_APP 2772; HASWELL-NEXT: retl # sched: [7:1.00] 2773; 2774; BROADWELL-LABEL: test_fldcw_fldenv: 2775; BROADWELL: # %bb.0: 2776; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2777; BROADWELL-NEXT: #APP 2778; BROADWELL-NEXT: fldcw (%eax) # sched: [7:1.00] 2779; BROADWELL-NEXT: fldenv (%eax) # sched: [60:14.00] 2780; BROADWELL-NEXT: #NO_APP 2781; BROADWELL-NEXT: retl # sched: [6:0.50] 2782; 2783; SKYLAKE-LABEL: test_fldcw_fldenv: 2784; SKYLAKE: # %bb.0: 2785; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2786; SKYLAKE-NEXT: #APP 2787; SKYLAKE-NEXT: fldcw (%eax) # sched: [7:1.00] 2788; SKYLAKE-NEXT: fldenv (%eax) # sched: [62:14.00] 2789; SKYLAKE-NEXT: #NO_APP 2790; SKYLAKE-NEXT: retl # sched: [6:0.50] 2791; 2792; SKX-LABEL: test_fldcw_fldenv: 2793; SKX: # %bb.0: 2794; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2795; SKX-NEXT: #APP 2796; SKX-NEXT: fldcw (%eax) # sched: [7:1.00] 2797; SKX-NEXT: fldenv (%eax) # sched: [62:14.00] 2798; SKX-NEXT: #NO_APP 2799; SKX-NEXT: retl # sched: [6:0.50] 2800; 2801; BTVER2-LABEL: test_fldcw_fldenv: 2802; BTVER2: # %bb.0: 2803; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 2804; BTVER2-NEXT: #APP 2805; BTVER2-NEXT: fldcw (%eax) # sched: [5:1.00] 2806; BTVER2-NEXT: fldenv (%eax) # sched: [100:0.50] 2807; BTVER2-NEXT: #NO_APP 2808; BTVER2-NEXT: retl # sched: [4:1.00] 2809; 2810; ZNVER1-LABEL: test_fldcw_fldenv: 2811; ZNVER1: # %bb.0: 2812; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 2813; ZNVER1-NEXT: #APP 2814; ZNVER1-NEXT: fldcw (%eax) # sched: [100:0.25] 2815; ZNVER1-NEXT: fldenv (%eax) # sched: [100:0.25] 2816; ZNVER1-NEXT: #NO_APP 2817; ZNVER1-NEXT: retl # sched: [1:0.50] 2818 tail call void asm sideeffect "fldcw $0 \0A\09 fldenv $0", "*m"(i8* %a0) nounwind 2819 ret void 2820} 2821 2822define void @test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz() optsize { 2823; GENERIC-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2824; GENERIC: # %bb.0: 2825; GENERIC-NEXT: #APP 2826; GENERIC-NEXT: fld1 2827; GENERIC-NEXT: fldl2e 2828; GENERIC-NEXT: fldl2t 2829; GENERIC-NEXT: fldlg2 2830; GENERIC-NEXT: fldln2 2831; GENERIC-NEXT: fldpi 2832; GENERIC-NEXT: fldz 2833; GENERIC-NEXT: #NO_APP 2834; GENERIC-NEXT: retl 2835; 2836; ATOM-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2837; ATOM: # %bb.0: 2838; ATOM-NEXT: #APP 2839; ATOM-NEXT: fld1 # sched: [6:3.00] 2840; ATOM-NEXT: fldl2e # sched: [10:5.00] 2841; ATOM-NEXT: fldl2t # sched: [10:5.00] 2842; ATOM-NEXT: fldlg2 # sched: [10:5.00] 2843; ATOM-NEXT: fldln2 # sched: [10:5.00] 2844; ATOM-NEXT: fldpi # sched: [10:5.00] 2845; ATOM-NEXT: fldz # sched: [1:0.50] 2846; ATOM-NEXT: #NO_APP 2847; ATOM-NEXT: retl # sched: [79:39.50] 2848; 2849; SLM-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2850; SLM: # %bb.0: 2851; SLM-NEXT: #APP 2852; SLM-NEXT: fld1 # sched: [1:0.50] 2853; SLM-NEXT: fldl2e # sched: [1:1.00] 2854; SLM-NEXT: fldl2t # sched: [1:1.00] 2855; SLM-NEXT: fldlg2 # sched: [1:1.00] 2856; SLM-NEXT: fldln2 # sched: [1:1.00] 2857; SLM-NEXT: fldpi # sched: [1:1.00] 2858; SLM-NEXT: fldz # sched: [1:0.50] 2859; SLM-NEXT: #NO_APP 2860; SLM-NEXT: retl # sched: [4:1.00] 2861; 2862; SANDY-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2863; SANDY: # %bb.0: 2864; SANDY-NEXT: #APP 2865; SANDY-NEXT: fld1 # sched: [1:1.00] 2866; SANDY-NEXT: fldl2e # sched: [1:1.00] 2867; SANDY-NEXT: fldl2t # sched: [1:1.00] 2868; SANDY-NEXT: fldlg2 # sched: [1:1.00] 2869; SANDY-NEXT: fldln2 # sched: [1:1.00] 2870; SANDY-NEXT: fldpi # sched: [1:1.00] 2871; SANDY-NEXT: fldz # sched: [1:1.00] 2872; SANDY-NEXT: #NO_APP 2873; SANDY-NEXT: retl # sched: [6:1.00] 2874; 2875; HASWELL-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2876; HASWELL: # %bb.0: 2877; HASWELL-NEXT: #APP 2878; HASWELL-NEXT: fld1 # sched: [1:1.00] 2879; HASWELL-NEXT: fldl2e # sched: [1:1.00] 2880; HASWELL-NEXT: fldl2t # sched: [1:1.00] 2881; HASWELL-NEXT: fldlg2 # sched: [1:1.00] 2882; HASWELL-NEXT: fldln2 # sched: [1:1.00] 2883; HASWELL-NEXT: fldpi # sched: [1:1.00] 2884; HASWELL-NEXT: fldz # sched: [1:0.50] 2885; HASWELL-NEXT: #NO_APP 2886; HASWELL-NEXT: retl # sched: [7:1.00] 2887; 2888; BROADWELL-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2889; BROADWELL: # %bb.0: 2890; BROADWELL-NEXT: #APP 2891; BROADWELL-NEXT: fld1 # sched: [1:1.00] 2892; BROADWELL-NEXT: fldl2e # sched: [1:1.00] 2893; BROADWELL-NEXT: fldl2t # sched: [1:1.00] 2894; BROADWELL-NEXT: fldlg2 # sched: [1:1.00] 2895; BROADWELL-NEXT: fldln2 # sched: [1:1.00] 2896; BROADWELL-NEXT: fldpi # sched: [1:1.00] 2897; BROADWELL-NEXT: fldz # sched: [1:0.50] 2898; BROADWELL-NEXT: #NO_APP 2899; BROADWELL-NEXT: retl # sched: [6:0.50] 2900; 2901; SKYLAKE-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2902; SKYLAKE: # %bb.0: 2903; SKYLAKE-NEXT: #APP 2904; SKYLAKE-NEXT: fld1 # sched: [1:1.00] 2905; SKYLAKE-NEXT: fldl2e # sched: [1:1.00] 2906; SKYLAKE-NEXT: fldl2t # sched: [1:1.00] 2907; SKYLAKE-NEXT: fldlg2 # sched: [1:1.00] 2908; SKYLAKE-NEXT: fldln2 # sched: [1:1.00] 2909; SKYLAKE-NEXT: fldpi # sched: [1:1.00] 2910; SKYLAKE-NEXT: fldz # sched: [1:0.50] 2911; SKYLAKE-NEXT: #NO_APP 2912; SKYLAKE-NEXT: retl # sched: [6:0.50] 2913; 2914; SKX-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2915; SKX: # %bb.0: 2916; SKX-NEXT: #APP 2917; SKX-NEXT: fld1 # sched: [1:1.00] 2918; SKX-NEXT: fldl2e # sched: [1:1.00] 2919; SKX-NEXT: fldl2t # sched: [1:1.00] 2920; SKX-NEXT: fldlg2 # sched: [1:1.00] 2921; SKX-NEXT: fldln2 # sched: [1:1.00] 2922; SKX-NEXT: fldpi # sched: [1:1.00] 2923; SKX-NEXT: fldz # sched: [1:0.50] 2924; SKX-NEXT: #NO_APP 2925; SKX-NEXT: retl # sched: [6:0.50] 2926; 2927; BTVER2-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2928; BTVER2: # %bb.0: 2929; BTVER2-NEXT: #APP 2930; BTVER2-NEXT: fld1 # sched: [3:1.00] 2931; BTVER2-NEXT: fldl2e # sched: [3:1.00] 2932; BTVER2-NEXT: fldl2t # sched: [3:1.00] 2933; BTVER2-NEXT: fldlg2 # sched: [3:1.00] 2934; BTVER2-NEXT: fldln2 # sched: [3:1.00] 2935; BTVER2-NEXT: fldpi # sched: [3:1.00] 2936; BTVER2-NEXT: fldz # sched: [3:1.00] 2937; BTVER2-NEXT: #NO_APP 2938; BTVER2-NEXT: retl # sched: [4:1.00] 2939; 2940; ZNVER1-LABEL: test_fld1_fldl2e_fldl2t_fldlg2_fldln2_fldpi_fldz: 2941; ZNVER1: # %bb.0: 2942; ZNVER1-NEXT: #APP 2943; ZNVER1-NEXT: fld1 # sched: [11:1.00] 2944; ZNVER1-NEXT: fldl2e # sched: [11:1.00] 2945; ZNVER1-NEXT: fldl2t # sched: [11:1.00] 2946; ZNVER1-NEXT: fldlg2 # sched: [11:1.00] 2947; ZNVER1-NEXT: fldln2 # sched: [11:1.00] 2948; ZNVER1-NEXT: fldpi # sched: [11:1.00] 2949; ZNVER1-NEXT: fldz # sched: [8:0.50] 2950; ZNVER1-NEXT: #NO_APP 2951; ZNVER1-NEXT: retl # sched: [1:0.50] 2952 tail call void asm sideeffect "fld1 \0A\09 fldl2e \0A\09 fldl2t \0A\09 fldlg2 \0A\09 fldln2 \0A\09 fldpi \0A\09 fldz", ""() nounwind 2953 ret void 2954} 2955 2956define void @test_fmul(float *%a0, double *%a1) optsize { 2957; GENERIC-LABEL: test_fmul: 2958; GENERIC: # %bb.0: 2959; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2960; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2961; GENERIC-NEXT: #APP 2962; GENERIC-NEXT: fmul %st(0), %st(1) 2963; GENERIC-NEXT: fmul %st(2) 2964; GENERIC-NEXT: fmuls (%ecx) 2965; GENERIC-NEXT: fmull (%eax) 2966; GENERIC-NEXT: #NO_APP 2967; GENERIC-NEXT: retl 2968; 2969; ATOM-LABEL: test_fmul: 2970; ATOM: # %bb.0: 2971; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 2972; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 2973; ATOM-NEXT: #APP 2974; ATOM-NEXT: fmul %st(0), %st(1) # sched: [4:4.00] 2975; ATOM-NEXT: fmul %st(2) # sched: [4:4.00] 2976; ATOM-NEXT: fmuls (%ecx) # sched: [4:4.00] 2977; ATOM-NEXT: fmull (%eax) # sched: [4:4.00] 2978; ATOM-NEXT: #NO_APP 2979; ATOM-NEXT: retl # sched: [79:39.50] 2980; 2981; SLM-LABEL: test_fmul: 2982; SLM: # %bb.0: 2983; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 2984; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 2985; SLM-NEXT: #APP 2986; SLM-NEXT: fmul %st(0), %st(1) # sched: [5:2.00] 2987; SLM-NEXT: fmul %st(2) # sched: [5:2.00] 2988; SLM-NEXT: fmuls (%ecx) # sched: [8:2.00] 2989; SLM-NEXT: fmull (%eax) # sched: [8:2.00] 2990; SLM-NEXT: #NO_APP 2991; SLM-NEXT: retl # sched: [4:1.00] 2992; 2993; SANDY-LABEL: test_fmul: 2994; SANDY: # %bb.0: 2995; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 2996; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 2997; SANDY-NEXT: #APP 2998; SANDY-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] 2999; SANDY-NEXT: fmul %st(2) # sched: [5:1.00] 3000; SANDY-NEXT: fmuls (%ecx) # sched: [12:1.00] 3001; SANDY-NEXT: fmull (%eax) # sched: [12:1.00] 3002; SANDY-NEXT: #NO_APP 3003; SANDY-NEXT: retl # sched: [6:1.00] 3004; 3005; HASWELL-LABEL: test_fmul: 3006; HASWELL: # %bb.0: 3007; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3008; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3009; HASWELL-NEXT: #APP 3010; HASWELL-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] 3011; HASWELL-NEXT: fmul %st(2) # sched: [5:1.00] 3012; HASWELL-NEXT: fmuls (%ecx) # sched: [12:1.00] 3013; HASWELL-NEXT: fmull (%eax) # sched: [12:1.00] 3014; HASWELL-NEXT: #NO_APP 3015; HASWELL-NEXT: retl # sched: [7:1.00] 3016; 3017; BROADWELL-LABEL: test_fmul: 3018; BROADWELL: # %bb.0: 3019; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3020; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3021; BROADWELL-NEXT: #APP 3022; BROADWELL-NEXT: fmul %st(0), %st(1) # sched: [5:1.00] 3023; BROADWELL-NEXT: fmul %st(2) # sched: [5:1.00] 3024; BROADWELL-NEXT: fmuls (%ecx) # sched: [11:1.00] 3025; BROADWELL-NEXT: fmull (%eax) # sched: [11:1.00] 3026; BROADWELL-NEXT: #NO_APP 3027; BROADWELL-NEXT: retl # sched: [6:0.50] 3028; 3029; SKYLAKE-LABEL: test_fmul: 3030; SKYLAKE: # %bb.0: 3031; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3032; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3033; SKYLAKE-NEXT: #APP 3034; SKYLAKE-NEXT: fmul %st(0), %st(1) # sched: [4:1.00] 3035; SKYLAKE-NEXT: fmul %st(2) # sched: [4:1.00] 3036; SKYLAKE-NEXT: fmuls (%ecx) # sched: [11:1.00] 3037; SKYLAKE-NEXT: fmull (%eax) # sched: [11:1.00] 3038; SKYLAKE-NEXT: #NO_APP 3039; SKYLAKE-NEXT: retl # sched: [6:0.50] 3040; 3041; SKX-LABEL: test_fmul: 3042; SKX: # %bb.0: 3043; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3044; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3045; SKX-NEXT: #APP 3046; SKX-NEXT: fmul %st(0), %st(1) # sched: [4:1.00] 3047; SKX-NEXT: fmul %st(2) # sched: [4:1.00] 3048; SKX-NEXT: fmuls (%ecx) # sched: [11:1.00] 3049; SKX-NEXT: fmull (%eax) # sched: [11:1.00] 3050; SKX-NEXT: #NO_APP 3051; SKX-NEXT: retl # sched: [6:0.50] 3052; 3053; BTVER2-LABEL: test_fmul: 3054; BTVER2: # %bb.0: 3055; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3056; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 3057; BTVER2-NEXT: #APP 3058; BTVER2-NEXT: fmul %st(0), %st(1) # sched: [2:1.00] 3059; BTVER2-NEXT: fmul %st(2) # sched: [2:1.00] 3060; BTVER2-NEXT: fmuls (%ecx) # sched: [7:1.00] 3061; BTVER2-NEXT: fmull (%eax) # sched: [7:1.00] 3062; BTVER2-NEXT: #NO_APP 3063; BTVER2-NEXT: retl # sched: [4:1.00] 3064; 3065; ZNVER1-LABEL: test_fmul: 3066; ZNVER1: # %bb.0: 3067; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3068; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 3069; ZNVER1-NEXT: #APP 3070; ZNVER1-NEXT: fmul %st(0), %st(1) # sched: [3:0.50] 3071; ZNVER1-NEXT: fmul %st(2) # sched: [3:0.50] 3072; ZNVER1-NEXT: fmuls (%ecx) # sched: [10:0.50] 3073; ZNVER1-NEXT: fmull (%eax) # sched: [10:0.50] 3074; ZNVER1-NEXT: #NO_APP 3075; ZNVER1-NEXT: retl # sched: [1:0.50] 3076 tail call void asm sideeffect "fmul %st(0), %st(1) \0A\09 fmul %st(2), %st(0) \0A\09 fmuls $0 \0A\09 fmull $1", "*m,*m"(float *%a0, double *%a1) nounwind 3077 ret void 3078} 3079 3080define void @test_fmulp_fimul(i16 *%a0, i32 *%a1) optsize { 3081; GENERIC-LABEL: test_fmulp_fimul: 3082; GENERIC: # %bb.0: 3083; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3084; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3085; GENERIC-NEXT: #APP 3086; GENERIC-NEXT: fmulp %st(1) 3087; GENERIC-NEXT: fmulp %st(2) 3088; GENERIC-NEXT: fimuls (%ecx) 3089; GENERIC-NEXT: fimull (%eax) 3090; GENERIC-NEXT: #NO_APP 3091; GENERIC-NEXT: retl 3092; 3093; ATOM-LABEL: test_fmulp_fimul: 3094; ATOM: # %bb.0: 3095; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 3096; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 3097; ATOM-NEXT: #APP 3098; ATOM-NEXT: fmulp %st(1) # sched: [4:4.00] 3099; ATOM-NEXT: fmulp %st(2) # sched: [4:4.00] 3100; ATOM-NEXT: fimuls (%ecx) # sched: [4:4.00] 3101; ATOM-NEXT: fimull (%eax) # sched: [4:4.00] 3102; ATOM-NEXT: #NO_APP 3103; ATOM-NEXT: retl # sched: [79:39.50] 3104; 3105; SLM-LABEL: test_fmulp_fimul: 3106; SLM: # %bb.0: 3107; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 3108; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 3109; SLM-NEXT: #APP 3110; SLM-NEXT: fmulp %st(1) # sched: [5:2.00] 3111; SLM-NEXT: fmulp %st(2) # sched: [5:2.00] 3112; SLM-NEXT: fimuls (%ecx) # sched: [8:2.00] 3113; SLM-NEXT: fimull (%eax) # sched: [8:2.00] 3114; SLM-NEXT: #NO_APP 3115; SLM-NEXT: retl # sched: [4:1.00] 3116; 3117; SANDY-LABEL: test_fmulp_fimul: 3118; SANDY: # %bb.0: 3119; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3120; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3121; SANDY-NEXT: #APP 3122; SANDY-NEXT: fmulp %st(1) # sched: [5:1.00] 3123; SANDY-NEXT: fmulp %st(2) # sched: [5:1.00] 3124; SANDY-NEXT: fimuls (%ecx) # sched: [15:1.00] 3125; SANDY-NEXT: fimull (%eax) # sched: [15:1.00] 3126; SANDY-NEXT: #NO_APP 3127; SANDY-NEXT: retl # sched: [6:1.00] 3128; 3129; HASWELL-LABEL: test_fmulp_fimul: 3130; HASWELL: # %bb.0: 3131; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3132; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3133; HASWELL-NEXT: #APP 3134; HASWELL-NEXT: fmulp %st(1) # sched: [5:1.00] 3135; HASWELL-NEXT: fmulp %st(2) # sched: [5:1.00] 3136; HASWELL-NEXT: fimuls (%ecx) # sched: [15:1.00] 3137; HASWELL-NEXT: fimull (%eax) # sched: [15:1.00] 3138; HASWELL-NEXT: #NO_APP 3139; HASWELL-NEXT: retl # sched: [7:1.00] 3140; 3141; BROADWELL-LABEL: test_fmulp_fimul: 3142; BROADWELL: # %bb.0: 3143; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3144; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3145; BROADWELL-NEXT: #APP 3146; BROADWELL-NEXT: fmulp %st(1) # sched: [5:1.00] 3147; BROADWELL-NEXT: fmulp %st(2) # sched: [5:1.00] 3148; BROADWELL-NEXT: fimuls (%ecx) # sched: [14:1.00] 3149; BROADWELL-NEXT: fimull (%eax) # sched: [14:1.00] 3150; BROADWELL-NEXT: #NO_APP 3151; BROADWELL-NEXT: retl # sched: [6:0.50] 3152; 3153; SKYLAKE-LABEL: test_fmulp_fimul: 3154; SKYLAKE: # %bb.0: 3155; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3156; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3157; SKYLAKE-NEXT: #APP 3158; SKYLAKE-NEXT: fmulp %st(1) # sched: [4:1.00] 3159; SKYLAKE-NEXT: fmulp %st(2) # sched: [4:1.00] 3160; SKYLAKE-NEXT: fimuls (%ecx) # sched: [14:1.00] 3161; SKYLAKE-NEXT: fimull (%eax) # sched: [14:1.00] 3162; SKYLAKE-NEXT: #NO_APP 3163; SKYLAKE-NEXT: retl # sched: [6:0.50] 3164; 3165; SKX-LABEL: test_fmulp_fimul: 3166; SKX: # %bb.0: 3167; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3168; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 3169; SKX-NEXT: #APP 3170; SKX-NEXT: fmulp %st(1) # sched: [4:1.00] 3171; SKX-NEXT: fmulp %st(2) # sched: [4:1.00] 3172; SKX-NEXT: fimuls (%ecx) # sched: [14:1.00] 3173; SKX-NEXT: fimull (%eax) # sched: [14:1.00] 3174; SKX-NEXT: #NO_APP 3175; SKX-NEXT: retl # sched: [6:0.50] 3176; 3177; BTVER2-LABEL: test_fmulp_fimul: 3178; BTVER2: # %bb.0: 3179; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3180; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 3181; BTVER2-NEXT: #APP 3182; BTVER2-NEXT: fmulp %st(1) # sched: [2:1.00] 3183; BTVER2-NEXT: fmulp %st(2) # sched: [2:1.00] 3184; BTVER2-NEXT: fimuls (%ecx) # sched: [7:1.00] 3185; BTVER2-NEXT: fimull (%eax) # sched: [7:1.00] 3186; BTVER2-NEXT: #NO_APP 3187; BTVER2-NEXT: retl # sched: [4:1.00] 3188; 3189; ZNVER1-LABEL: test_fmulp_fimul: 3190; ZNVER1: # %bb.0: 3191; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3192; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 3193; ZNVER1-NEXT: #APP 3194; ZNVER1-NEXT: fmulp %st(1) # sched: [3:0.50] 3195; ZNVER1-NEXT: fmulp %st(2) # sched: [3:0.50] 3196; ZNVER1-NEXT: fimuls (%ecx) # sched: [10:0.50] 3197; ZNVER1-NEXT: fimull (%eax) # sched: [10:0.50] 3198; ZNVER1-NEXT: #NO_APP 3199; ZNVER1-NEXT: retl # sched: [1:0.50] 3200 tail call void asm sideeffect "fmulp \0A\09 fmulp %st(2), %st(0) \0A\09 fimuls $0 \0A\09 fimull $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 3201 ret void 3202} 3203 3204define void @test_fnop() optsize { 3205; GENERIC-LABEL: test_fnop: 3206; GENERIC: # %bb.0: 3207; GENERIC-NEXT: #APP 3208; GENERIC-NEXT: fnop 3209; GENERIC-NEXT: #NO_APP 3210; GENERIC-NEXT: retl 3211; 3212; ATOM-LABEL: test_fnop: 3213; ATOM: # %bb.0: 3214; ATOM-NEXT: #APP 3215; ATOM-NEXT: fnop # sched: [1:0.50] 3216; ATOM-NEXT: #NO_APP 3217; ATOM-NEXT: retl # sched: [79:39.50] 3218; 3219; SLM-LABEL: test_fnop: 3220; SLM: # %bb.0: 3221; SLM-NEXT: #APP 3222; SLM-NEXT: fnop # sched: [1:0.50] 3223; SLM-NEXT: #NO_APP 3224; SLM-NEXT: retl # sched: [4:1.00] 3225; 3226; SANDY-LABEL: test_fnop: 3227; SANDY: # %bb.0: 3228; SANDY-NEXT: #APP 3229; SANDY-NEXT: fnop # sched: [1:1.00] 3230; SANDY-NEXT: #NO_APP 3231; SANDY-NEXT: retl # sched: [6:1.00] 3232; 3233; HASWELL-LABEL: test_fnop: 3234; HASWELL: # %bb.0: 3235; HASWELL-NEXT: #APP 3236; HASWELL-NEXT: fnop # sched: [1:0.50] 3237; HASWELL-NEXT: #NO_APP 3238; HASWELL-NEXT: retl # sched: [7:1.00] 3239; 3240; BROADWELL-LABEL: test_fnop: 3241; BROADWELL: # %bb.0: 3242; BROADWELL-NEXT: #APP 3243; BROADWELL-NEXT: fnop # sched: [1:0.50] 3244; BROADWELL-NEXT: #NO_APP 3245; BROADWELL-NEXT: retl # sched: [6:0.50] 3246; 3247; SKYLAKE-LABEL: test_fnop: 3248; SKYLAKE: # %bb.0: 3249; SKYLAKE-NEXT: #APP 3250; SKYLAKE-NEXT: fnop # sched: [1:0.50] 3251; SKYLAKE-NEXT: #NO_APP 3252; SKYLAKE-NEXT: retl # sched: [6:0.50] 3253; 3254; SKX-LABEL: test_fnop: 3255; SKX: # %bb.0: 3256; SKX-NEXT: #APP 3257; SKX-NEXT: fnop # sched: [1:0.50] 3258; SKX-NEXT: #NO_APP 3259; SKX-NEXT: retl # sched: [6:0.50] 3260; 3261; BTVER2-LABEL: test_fnop: 3262; BTVER2: # %bb.0: 3263; BTVER2-NEXT: #APP 3264; BTVER2-NEXT: fnop # sched: [1:0.50] 3265; BTVER2-NEXT: #NO_APP 3266; BTVER2-NEXT: retl # sched: [4:1.00] 3267; 3268; ZNVER1-LABEL: test_fnop: 3269; ZNVER1: # %bb.0: 3270; ZNVER1-NEXT: #APP 3271; ZNVER1-NEXT: fnop # sched: [1:1.00] 3272; ZNVER1-NEXT: #NO_APP 3273; ZNVER1-NEXT: retl # sched: [1:0.50] 3274 tail call void asm sideeffect "fnop", ""() nounwind 3275 ret void 3276} 3277 3278define void @test_fpatan() optsize { 3279; GENERIC-LABEL: test_fpatan: 3280; GENERIC: # %bb.0: 3281; GENERIC-NEXT: #APP 3282; GENERIC-NEXT: fpatan 3283; GENERIC-NEXT: #NO_APP 3284; GENERIC-NEXT: retl 3285; 3286; ATOM-LABEL: test_fpatan: 3287; ATOM: # %bb.0: 3288; ATOM-NEXT: #APP 3289; ATOM-NEXT: fpatan # sched: [183:91.50] 3290; ATOM-NEXT: #NO_APP 3291; ATOM-NEXT: retl # sched: [79:39.50] 3292; 3293; SLM-LABEL: test_fpatan: 3294; SLM: # %bb.0: 3295; SLM-NEXT: #APP 3296; SLM-NEXT: fpatan # sched: [100:1.00] 3297; SLM-NEXT: #NO_APP 3298; SLM-NEXT: retl # sched: [4:1.00] 3299; 3300; SANDY-LABEL: test_fpatan: 3301; SANDY: # %bb.0: 3302; SANDY-NEXT: #APP 3303; SANDY-NEXT: fpatan # sched: [100:0.33] 3304; SANDY-NEXT: #NO_APP 3305; SANDY-NEXT: retl # sched: [6:1.00] 3306; 3307; HASWELL-LABEL: test_fpatan: 3308; HASWELL: # %bb.0: 3309; HASWELL-NEXT: #APP 3310; HASWELL-NEXT: fpatan # sched: [100:0.25] 3311; HASWELL-NEXT: #NO_APP 3312; HASWELL-NEXT: retl # sched: [7:1.00] 3313; 3314; BROADWELL-LABEL: test_fpatan: 3315; BROADWELL: # %bb.0: 3316; BROADWELL-NEXT: #APP 3317; BROADWELL-NEXT: fpatan # sched: [100:0.25] 3318; BROADWELL-NEXT: #NO_APP 3319; BROADWELL-NEXT: retl # sched: [6:0.50] 3320; 3321; SKYLAKE-LABEL: test_fpatan: 3322; SKYLAKE: # %bb.0: 3323; SKYLAKE-NEXT: #APP 3324; SKYLAKE-NEXT: fpatan # sched: [100:0.25] 3325; SKYLAKE-NEXT: #NO_APP 3326; SKYLAKE-NEXT: retl # sched: [6:0.50] 3327; 3328; SKX-LABEL: test_fpatan: 3329; SKX: # %bb.0: 3330; SKX-NEXT: #APP 3331; SKX-NEXT: fpatan # sched: [100:0.25] 3332; SKX-NEXT: #NO_APP 3333; SKX-NEXT: retl # sched: [6:0.50] 3334; 3335; BTVER2-LABEL: test_fpatan: 3336; BTVER2: # %bb.0: 3337; BTVER2-NEXT: #APP 3338; BTVER2-NEXT: fpatan # sched: [100:0.50] 3339; BTVER2-NEXT: #NO_APP 3340; BTVER2-NEXT: retl # sched: [4:1.00] 3341; 3342; ZNVER1-LABEL: test_fpatan: 3343; ZNVER1: # %bb.0: 3344; ZNVER1-NEXT: #APP 3345; ZNVER1-NEXT: fpatan # sched: [100:0.25] 3346; ZNVER1-NEXT: #NO_APP 3347; ZNVER1-NEXT: retl # sched: [1:0.50] 3348 tail call void asm sideeffect "fpatan", ""() nounwind 3349 ret void 3350} 3351 3352define void @test_fprem_fprem1() optsize { 3353; GENERIC-LABEL: test_fprem_fprem1: 3354; GENERIC: # %bb.0: 3355; GENERIC-NEXT: #APP 3356; GENERIC-NEXT: fprem 3357; GENERIC-NEXT: fprem1 3358; GENERIC-NEXT: #NO_APP 3359; GENERIC-NEXT: retl 3360; 3361; ATOM-LABEL: test_fprem_fprem1: 3362; ATOM: # %bb.0: 3363; ATOM-NEXT: #APP 3364; ATOM-NEXT: fprem # sched: [55:27.50] 3365; ATOM-NEXT: fprem1 # sched: [71:35.50] 3366; ATOM-NEXT: #NO_APP 3367; ATOM-NEXT: retl # sched: [79:39.50] 3368; 3369; SLM-LABEL: test_fprem_fprem1: 3370; SLM: # %bb.0: 3371; SLM-NEXT: #APP 3372; SLM-NEXT: fprem # sched: [100:1.00] 3373; SLM-NEXT: fprem1 # sched: [100:1.00] 3374; SLM-NEXT: #NO_APP 3375; SLM-NEXT: retl # sched: [4:1.00] 3376; 3377; SANDY-LABEL: test_fprem_fprem1: 3378; SANDY: # %bb.0: 3379; SANDY-NEXT: #APP 3380; SANDY-NEXT: fprem # sched: [100:0.33] 3381; SANDY-NEXT: fprem1 # sched: [100:0.33] 3382; SANDY-NEXT: #NO_APP 3383; SANDY-NEXT: retl # sched: [6:1.00] 3384; 3385; HASWELL-LABEL: test_fprem_fprem1: 3386; HASWELL: # %bb.0: 3387; HASWELL-NEXT: #APP 3388; HASWELL-NEXT: fprem # sched: [19:7.00] 3389; HASWELL-NEXT: fprem1 # sched: [27:10.25] 3390; HASWELL-NEXT: #NO_APP 3391; HASWELL-NEXT: retl # sched: [7:1.00] 3392; 3393; BROADWELL-LABEL: test_fprem_fprem1: 3394; BROADWELL: # %bb.0: 3395; BROADWELL-NEXT: #APP 3396; BROADWELL-NEXT: fprem # sched: [100:0.25] 3397; BROADWELL-NEXT: fprem1 # sched: [100:0.25] 3398; BROADWELL-NEXT: #NO_APP 3399; BROADWELL-NEXT: retl # sched: [6:0.50] 3400; 3401; SKYLAKE-LABEL: test_fprem_fprem1: 3402; SKYLAKE: # %bb.0: 3403; SKYLAKE-NEXT: #APP 3404; SKYLAKE-NEXT: fprem # sched: [100:0.25] 3405; SKYLAKE-NEXT: fprem1 # sched: [100:0.25] 3406; SKYLAKE-NEXT: #NO_APP 3407; SKYLAKE-NEXT: retl # sched: [6:0.50] 3408; 3409; SKX-LABEL: test_fprem_fprem1: 3410; SKX: # %bb.0: 3411; SKX-NEXT: #APP 3412; SKX-NEXT: fprem # sched: [100:0.25] 3413; SKX-NEXT: fprem1 # sched: [100:0.25] 3414; SKX-NEXT: #NO_APP 3415; SKX-NEXT: retl # sched: [6:0.50] 3416; 3417; BTVER2-LABEL: test_fprem_fprem1: 3418; BTVER2: # %bb.0: 3419; BTVER2-NEXT: #APP 3420; BTVER2-NEXT: fprem # sched: [100:0.50] 3421; BTVER2-NEXT: fprem1 # sched: [100:0.50] 3422; BTVER2-NEXT: #NO_APP 3423; BTVER2-NEXT: retl # sched: [4:1.00] 3424; 3425; ZNVER1-LABEL: test_fprem_fprem1: 3426; ZNVER1: # %bb.0: 3427; ZNVER1-NEXT: #APP 3428; ZNVER1-NEXT: fprem # sched: [100:0.25] 3429; ZNVER1-NEXT: fprem1 # sched: [100:0.25] 3430; ZNVER1-NEXT: #NO_APP 3431; ZNVER1-NEXT: retl # sched: [1:0.50] 3432 tail call void asm sideeffect "fprem \0A\09 fprem1", ""() nounwind 3433 ret void 3434} 3435 3436define void @test_fptan() optsize { 3437; GENERIC-LABEL: test_fptan: 3438; GENERIC: # %bb.0: 3439; GENERIC-NEXT: #APP 3440; GENERIC-NEXT: fptan 3441; GENERIC-NEXT: #NO_APP 3442; GENERIC-NEXT: retl 3443; 3444; ATOM-LABEL: test_fptan: 3445; ATOM: # %bb.0: 3446; ATOM-NEXT: #APP 3447; ATOM-NEXT: fptan # sched: [168:84.00] 3448; ATOM-NEXT: #NO_APP 3449; ATOM-NEXT: retl # sched: [79:39.50] 3450; 3451; SLM-LABEL: test_fptan: 3452; SLM: # %bb.0: 3453; SLM-NEXT: #APP 3454; SLM-NEXT: fptan # sched: [100:1.00] 3455; SLM-NEXT: #NO_APP 3456; SLM-NEXT: retl # sched: [4:1.00] 3457; 3458; SANDY-LABEL: test_fptan: 3459; SANDY: # %bb.0: 3460; SANDY-NEXT: #APP 3461; SANDY-NEXT: fptan # sched: [100:0.33] 3462; SANDY-NEXT: #NO_APP 3463; SANDY-NEXT: retl # sched: [6:1.00] 3464; 3465; HASWELL-LABEL: test_fptan: 3466; HASWELL: # %bb.0: 3467; HASWELL-NEXT: #APP 3468; HASWELL-NEXT: fptan # sched: [100:0.25] 3469; HASWELL-NEXT: #NO_APP 3470; HASWELL-NEXT: retl # sched: [7:1.00] 3471; 3472; BROADWELL-LABEL: test_fptan: 3473; BROADWELL: # %bb.0: 3474; BROADWELL-NEXT: #APP 3475; BROADWELL-NEXT: fptan # sched: [100:0.25] 3476; BROADWELL-NEXT: #NO_APP 3477; BROADWELL-NEXT: retl # sched: [6:0.50] 3478; 3479; SKYLAKE-LABEL: test_fptan: 3480; SKYLAKE: # %bb.0: 3481; SKYLAKE-NEXT: #APP 3482; SKYLAKE-NEXT: fptan # sched: [100:0.25] 3483; SKYLAKE-NEXT: #NO_APP 3484; SKYLAKE-NEXT: retl # sched: [6:0.50] 3485; 3486; SKX-LABEL: test_fptan: 3487; SKX: # %bb.0: 3488; SKX-NEXT: #APP 3489; SKX-NEXT: fptan # sched: [100:0.25] 3490; SKX-NEXT: #NO_APP 3491; SKX-NEXT: retl # sched: [6:0.50] 3492; 3493; BTVER2-LABEL: test_fptan: 3494; BTVER2: # %bb.0: 3495; BTVER2-NEXT: #APP 3496; BTVER2-NEXT: fptan # sched: [100:0.50] 3497; BTVER2-NEXT: #NO_APP 3498; BTVER2-NEXT: retl # sched: [4:1.00] 3499; 3500; ZNVER1-LABEL: test_fptan: 3501; ZNVER1: # %bb.0: 3502; ZNVER1-NEXT: #APP 3503; ZNVER1-NEXT: fptan # sched: [100:0.25] 3504; ZNVER1-NEXT: #NO_APP 3505; ZNVER1-NEXT: retl # sched: [1:0.50] 3506 tail call void asm sideeffect "fptan", ""() nounwind 3507 ret void 3508} 3509 3510define void @test_frndint() optsize { 3511; GENERIC-LABEL: test_frndint: 3512; GENERIC: # %bb.0: 3513; GENERIC-NEXT: #APP 3514; GENERIC-NEXT: frndint 3515; GENERIC-NEXT: #NO_APP 3516; GENERIC-NEXT: retl 3517; 3518; ATOM-LABEL: test_frndint: 3519; ATOM: # %bb.0: 3520; ATOM-NEXT: #APP 3521; ATOM-NEXT: frndint # sched: [46:23.00] 3522; ATOM-NEXT: #NO_APP 3523; ATOM-NEXT: retl # sched: [79:39.50] 3524; 3525; SLM-LABEL: test_frndint: 3526; SLM: # %bb.0: 3527; SLM-NEXT: #APP 3528; SLM-NEXT: frndint # sched: [100:1.00] 3529; SLM-NEXT: #NO_APP 3530; SLM-NEXT: retl # sched: [4:1.00] 3531; 3532; SANDY-LABEL: test_frndint: 3533; SANDY: # %bb.0: 3534; SANDY-NEXT: #APP 3535; SANDY-NEXT: frndint # sched: [100:0.33] 3536; SANDY-NEXT: #NO_APP 3537; SANDY-NEXT: retl # sched: [6:1.00] 3538; 3539; HASWELL-LABEL: test_frndint: 3540; HASWELL: # %bb.0: 3541; HASWELL-NEXT: #APP 3542; HASWELL-NEXT: frndint # sched: [11:4.25] 3543; HASWELL-NEXT: #NO_APP 3544; HASWELL-NEXT: retl # sched: [7:1.00] 3545; 3546; BROADWELL-LABEL: test_frndint: 3547; BROADWELL: # %bb.0: 3548; BROADWELL-NEXT: #APP 3549; BROADWELL-NEXT: frndint # sched: [100:0.25] 3550; BROADWELL-NEXT: #NO_APP 3551; BROADWELL-NEXT: retl # sched: [6:0.50] 3552; 3553; SKYLAKE-LABEL: test_frndint: 3554; SKYLAKE: # %bb.0: 3555; SKYLAKE-NEXT: #APP 3556; SKYLAKE-NEXT: frndint # sched: [100:0.25] 3557; SKYLAKE-NEXT: #NO_APP 3558; SKYLAKE-NEXT: retl # sched: [6:0.50] 3559; 3560; SKX-LABEL: test_frndint: 3561; SKX: # %bb.0: 3562; SKX-NEXT: #APP 3563; SKX-NEXT: frndint # sched: [100:0.25] 3564; SKX-NEXT: #NO_APP 3565; SKX-NEXT: retl # sched: [6:0.50] 3566; 3567; BTVER2-LABEL: test_frndint: 3568; BTVER2: # %bb.0: 3569; BTVER2-NEXT: #APP 3570; BTVER2-NEXT: frndint # sched: [100:0.50] 3571; BTVER2-NEXT: #NO_APP 3572; BTVER2-NEXT: retl # sched: [4:1.00] 3573; 3574; ZNVER1-LABEL: test_frndint: 3575; ZNVER1: # %bb.0: 3576; ZNVER1-NEXT: #APP 3577; ZNVER1-NEXT: frndint # sched: [100:0.25] 3578; ZNVER1-NEXT: #NO_APP 3579; ZNVER1-NEXT: retl # sched: [1:0.50] 3580 tail call void asm sideeffect "frndint", ""() nounwind 3581 ret void 3582} 3583 3584define void @test_frstor(i8* %a0) optsize { 3585; GENERIC-LABEL: test_frstor: 3586; GENERIC: # %bb.0: 3587; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3588; GENERIC-NEXT: #APP 3589; GENERIC-NEXT: frstor (%eax) 3590; GENERIC-NEXT: #NO_APP 3591; GENERIC-NEXT: retl 3592; 3593; ATOM-LABEL: test_frstor: 3594; ATOM: # %bb.0: 3595; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 3596; ATOM-NEXT: #APP 3597; ATOM-NEXT: frstor (%eax) # sched: [100:0.50] 3598; ATOM-NEXT: #NO_APP 3599; ATOM-NEXT: retl # sched: [79:39.50] 3600; 3601; SLM-LABEL: test_frstor: 3602; SLM: # %bb.0: 3603; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 3604; SLM-NEXT: #APP 3605; SLM-NEXT: frstor (%eax) # sched: [100:1.00] 3606; SLM-NEXT: #NO_APP 3607; SLM-NEXT: retl # sched: [4:1.00] 3608; 3609; SANDY-LABEL: test_frstor: 3610; SANDY: # %bb.0: 3611; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3612; SANDY-NEXT: #APP 3613; SANDY-NEXT: frstor (%eax) # sched: [100:0.33] 3614; SANDY-NEXT: #NO_APP 3615; SANDY-NEXT: retl # sched: [6:1.00] 3616; 3617; HASWELL-LABEL: test_frstor: 3618; HASWELL: # %bb.0: 3619; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3620; HASWELL-NEXT: #APP 3621; HASWELL-NEXT: frstor (%eax) # sched: [1:22.50] 3622; HASWELL-NEXT: #NO_APP 3623; HASWELL-NEXT: retl # sched: [7:1.00] 3624; 3625; BROADWELL-LABEL: test_frstor: 3626; BROADWELL: # %bb.0: 3627; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3628; BROADWELL-NEXT: #APP 3629; BROADWELL-NEXT: frstor (%eax) # sched: [100:0.25] 3630; BROADWELL-NEXT: #NO_APP 3631; BROADWELL-NEXT: retl # sched: [6:0.50] 3632; 3633; SKYLAKE-LABEL: test_frstor: 3634; SKYLAKE: # %bb.0: 3635; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3636; SKYLAKE-NEXT: #APP 3637; SKYLAKE-NEXT: frstor (%eax) # sched: [100:0.25] 3638; SKYLAKE-NEXT: #NO_APP 3639; SKYLAKE-NEXT: retl # sched: [6:0.50] 3640; 3641; SKX-LABEL: test_frstor: 3642; SKX: # %bb.0: 3643; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3644; SKX-NEXT: #APP 3645; SKX-NEXT: frstor (%eax) # sched: [100:0.25] 3646; SKX-NEXT: #NO_APP 3647; SKX-NEXT: retl # sched: [6:0.50] 3648; 3649; BTVER2-LABEL: test_frstor: 3650; BTVER2: # %bb.0: 3651; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3652; BTVER2-NEXT: #APP 3653; BTVER2-NEXT: frstor (%eax) # sched: [100:0.50] 3654; BTVER2-NEXT: #NO_APP 3655; BTVER2-NEXT: retl # sched: [4:1.00] 3656; 3657; ZNVER1-LABEL: test_frstor: 3658; ZNVER1: # %bb.0: 3659; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3660; ZNVER1-NEXT: #APP 3661; ZNVER1-NEXT: frstor (%eax) # sched: [100:0.25] 3662; ZNVER1-NEXT: #NO_APP 3663; ZNVER1-NEXT: retl # sched: [1:0.50] 3664 tail call void asm sideeffect "frstor $0", "*m"(i8* %a0) nounwind 3665 ret void 3666} 3667 3668define void @test_fsave(i8* %a0) optsize { 3669; GENERIC-LABEL: test_fsave: 3670; GENERIC: # %bb.0: 3671; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3672; GENERIC-NEXT: #APP 3673; GENERIC-NEXT: wait 3674; GENERIC-NEXT: fnsave (%eax) 3675; GENERIC-NEXT: #NO_APP 3676; GENERIC-NEXT: retl 3677; 3678; ATOM-LABEL: test_fsave: 3679; ATOM: # %bb.0: 3680; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 3681; ATOM-NEXT: #APP 3682; ATOM-NEXT: wait # sched: [1:0.50] 3683; ATOM-NEXT: fnsave (%eax) # sched: [100:0.50] 3684; ATOM-NEXT: #NO_APP 3685; ATOM-NEXT: retl # sched: [79:39.50] 3686; 3687; SLM-LABEL: test_fsave: 3688; SLM: # %bb.0: 3689; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 3690; SLM-NEXT: #APP 3691; SLM-NEXT: wait # sched: [100:1.00] 3692; SLM-NEXT: fnsave (%eax) # sched: [100:1.00] 3693; SLM-NEXT: #NO_APP 3694; SLM-NEXT: retl # sched: [4:1.00] 3695; 3696; SANDY-LABEL: test_fsave: 3697; SANDY: # %bb.0: 3698; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3699; SANDY-NEXT: #APP 3700; SANDY-NEXT: wait # sched: [100:0.33] 3701; SANDY-NEXT: fnsave (%eax) # sched: [100:0.33] 3702; SANDY-NEXT: #NO_APP 3703; SANDY-NEXT: retl # sched: [6:1.00] 3704; 3705; HASWELL-LABEL: test_fsave: 3706; HASWELL: # %bb.0: 3707; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3708; HASWELL-NEXT: #APP 3709; HASWELL-NEXT: wait # sched: [2:0.50] 3710; HASWELL-NEXT: fnsave (%eax) # sched: [1:36.75] 3711; HASWELL-NEXT: #NO_APP 3712; HASWELL-NEXT: retl # sched: [7:1.00] 3713; 3714; BROADWELL-LABEL: test_fsave: 3715; BROADWELL: # %bb.0: 3716; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3717; BROADWELL-NEXT: #APP 3718; BROADWELL-NEXT: wait # sched: [2:0.50] 3719; BROADWELL-NEXT: fnsave (%eax) # sched: [100:0.25] 3720; BROADWELL-NEXT: #NO_APP 3721; BROADWELL-NEXT: retl # sched: [6:0.50] 3722; 3723; SKYLAKE-LABEL: test_fsave: 3724; SKYLAKE: # %bb.0: 3725; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3726; SKYLAKE-NEXT: #APP 3727; SKYLAKE-NEXT: wait # sched: [2:0.50] 3728; SKYLAKE-NEXT: fnsave (%eax) # sched: [100:0.25] 3729; SKYLAKE-NEXT: #NO_APP 3730; SKYLAKE-NEXT: retl # sched: [6:0.50] 3731; 3732; SKX-LABEL: test_fsave: 3733; SKX: # %bb.0: 3734; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3735; SKX-NEXT: #APP 3736; SKX-NEXT: wait # sched: [2:0.50] 3737; SKX-NEXT: fnsave (%eax) # sched: [100:0.25] 3738; SKX-NEXT: #NO_APP 3739; SKX-NEXT: retl # sched: [6:0.50] 3740; 3741; BTVER2-LABEL: test_fsave: 3742; BTVER2: # %bb.0: 3743; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3744; BTVER2-NEXT: #APP 3745; BTVER2-NEXT: wait # sched: [100:0.50] 3746; BTVER2-NEXT: fnsave (%eax) # sched: [100:0.50] 3747; BTVER2-NEXT: #NO_APP 3748; BTVER2-NEXT: retl # sched: [4:1.00] 3749; 3750; ZNVER1-LABEL: test_fsave: 3751; ZNVER1: # %bb.0: 3752; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3753; ZNVER1-NEXT: #APP 3754; ZNVER1-NEXT: wait # sched: [1:1.00] 3755; ZNVER1-NEXT: fnsave (%eax) # sched: [100:0.25] 3756; ZNVER1-NEXT: #NO_APP 3757; ZNVER1-NEXT: retl # sched: [1:0.50] 3758 tail call void asm sideeffect "fsave $0", "*m"(i8* %a0) nounwind 3759 ret void 3760} 3761 3762define void @test_fnsave(i8* %a0) optsize { 3763; GENERIC-LABEL: test_fnsave: 3764; GENERIC: # %bb.0: 3765; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3766; GENERIC-NEXT: #APP 3767; GENERIC-NEXT: fnsave (%eax) 3768; GENERIC-NEXT: #NO_APP 3769; GENERIC-NEXT: retl 3770; 3771; ATOM-LABEL: test_fnsave: 3772; ATOM: # %bb.0: 3773; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 3774; ATOM-NEXT: #APP 3775; ATOM-NEXT: fnsave (%eax) # sched: [100:0.50] 3776; ATOM-NEXT: #NO_APP 3777; ATOM-NEXT: retl # sched: [79:39.50] 3778; 3779; SLM-LABEL: test_fnsave: 3780; SLM: # %bb.0: 3781; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 3782; SLM-NEXT: #APP 3783; SLM-NEXT: fnsave (%eax) # sched: [100:1.00] 3784; SLM-NEXT: #NO_APP 3785; SLM-NEXT: retl # sched: [4:1.00] 3786; 3787; SANDY-LABEL: test_fnsave: 3788; SANDY: # %bb.0: 3789; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3790; SANDY-NEXT: #APP 3791; SANDY-NEXT: fnsave (%eax) # sched: [100:0.33] 3792; SANDY-NEXT: #NO_APP 3793; SANDY-NEXT: retl # sched: [6:1.00] 3794; 3795; HASWELL-LABEL: test_fnsave: 3796; HASWELL: # %bb.0: 3797; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3798; HASWELL-NEXT: #APP 3799; HASWELL-NEXT: fnsave (%eax) # sched: [1:36.75] 3800; HASWELL-NEXT: #NO_APP 3801; HASWELL-NEXT: retl # sched: [7:1.00] 3802; 3803; BROADWELL-LABEL: test_fnsave: 3804; BROADWELL: # %bb.0: 3805; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3806; BROADWELL-NEXT: #APP 3807; BROADWELL-NEXT: fnsave (%eax) # sched: [100:0.25] 3808; BROADWELL-NEXT: #NO_APP 3809; BROADWELL-NEXT: retl # sched: [6:0.50] 3810; 3811; SKYLAKE-LABEL: test_fnsave: 3812; SKYLAKE: # %bb.0: 3813; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3814; SKYLAKE-NEXT: #APP 3815; SKYLAKE-NEXT: fnsave (%eax) # sched: [100:0.25] 3816; SKYLAKE-NEXT: #NO_APP 3817; SKYLAKE-NEXT: retl # sched: [6:0.50] 3818; 3819; SKX-LABEL: test_fnsave: 3820; SKX: # %bb.0: 3821; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 3822; SKX-NEXT: #APP 3823; SKX-NEXT: fnsave (%eax) # sched: [100:0.25] 3824; SKX-NEXT: #NO_APP 3825; SKX-NEXT: retl # sched: [6:0.50] 3826; 3827; BTVER2-LABEL: test_fnsave: 3828; BTVER2: # %bb.0: 3829; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 3830; BTVER2-NEXT: #APP 3831; BTVER2-NEXT: fnsave (%eax) # sched: [100:0.50] 3832; BTVER2-NEXT: #NO_APP 3833; BTVER2-NEXT: retl # sched: [4:1.00] 3834; 3835; ZNVER1-LABEL: test_fnsave: 3836; ZNVER1: # %bb.0: 3837; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 3838; ZNVER1-NEXT: #APP 3839; ZNVER1-NEXT: fnsave (%eax) # sched: [100:0.25] 3840; ZNVER1-NEXT: #NO_APP 3841; ZNVER1-NEXT: retl # sched: [1:0.50] 3842 tail call void asm sideeffect "fnsave $0", "*m"(i8* %a0) nounwind 3843 ret void 3844} 3845 3846define void @test_fscale() optsize { 3847; GENERIC-LABEL: test_fscale: 3848; GENERIC: # %bb.0: 3849; GENERIC-NEXT: #APP 3850; GENERIC-NEXT: fscale 3851; GENERIC-NEXT: #NO_APP 3852; GENERIC-NEXT: retl 3853; 3854; ATOM-LABEL: test_fscale: 3855; ATOM: # %bb.0: 3856; ATOM-NEXT: #APP 3857; ATOM-NEXT: fscale # sched: [77:38.50] 3858; ATOM-NEXT: #NO_APP 3859; ATOM-NEXT: retl # sched: [79:39.50] 3860; 3861; SLM-LABEL: test_fscale: 3862; SLM: # %bb.0: 3863; SLM-NEXT: #APP 3864; SLM-NEXT: fscale # sched: [100:1.00] 3865; SLM-NEXT: #NO_APP 3866; SLM-NEXT: retl # sched: [4:1.00] 3867; 3868; SANDY-LABEL: test_fscale: 3869; SANDY: # %bb.0: 3870; SANDY-NEXT: #APP 3871; SANDY-NEXT: fscale # sched: [100:0.33] 3872; SANDY-NEXT: #NO_APP 3873; SANDY-NEXT: retl # sched: [6:1.00] 3874; 3875; HASWELL-LABEL: test_fscale: 3876; HASWELL: # %bb.0: 3877; HASWELL-NEXT: #APP 3878; HASWELL-NEXT: fscale # sched: [75:12.50] 3879; HASWELL-NEXT: #NO_APP 3880; HASWELL-NEXT: retl # sched: [7:1.00] 3881; 3882; BROADWELL-LABEL: test_fscale: 3883; BROADWELL: # %bb.0: 3884; BROADWELL-NEXT: #APP 3885; BROADWELL-NEXT: fscale # sched: [100:0.25] 3886; BROADWELL-NEXT: #NO_APP 3887; BROADWELL-NEXT: retl # sched: [6:0.50] 3888; 3889; SKYLAKE-LABEL: test_fscale: 3890; SKYLAKE: # %bb.0: 3891; SKYLAKE-NEXT: #APP 3892; SKYLAKE-NEXT: fscale # sched: [100:0.25] 3893; SKYLAKE-NEXT: #NO_APP 3894; SKYLAKE-NEXT: retl # sched: [6:0.50] 3895; 3896; SKX-LABEL: test_fscale: 3897; SKX: # %bb.0: 3898; SKX-NEXT: #APP 3899; SKX-NEXT: fscale # sched: [100:0.25] 3900; SKX-NEXT: #NO_APP 3901; SKX-NEXT: retl # sched: [6:0.50] 3902; 3903; BTVER2-LABEL: test_fscale: 3904; BTVER2: # %bb.0: 3905; BTVER2-NEXT: #APP 3906; BTVER2-NEXT: fscale # sched: [100:0.50] 3907; BTVER2-NEXT: #NO_APP 3908; BTVER2-NEXT: retl # sched: [4:1.00] 3909; 3910; ZNVER1-LABEL: test_fscale: 3911; ZNVER1: # %bb.0: 3912; ZNVER1-NEXT: #APP 3913; ZNVER1-NEXT: fscale # sched: [100:0.25] 3914; ZNVER1-NEXT: #NO_APP 3915; ZNVER1-NEXT: retl # sched: [1:0.50] 3916 tail call void asm sideeffect "fscale", ""() nounwind 3917 ret void 3918} 3919 3920define void @test_fsin() optsize { 3921; GENERIC-LABEL: test_fsin: 3922; GENERIC: # %bb.0: 3923; GENERIC-NEXT: #APP 3924; GENERIC-NEXT: fsin 3925; GENERIC-NEXT: #NO_APP 3926; GENERIC-NEXT: retl 3927; 3928; ATOM-LABEL: test_fsin: 3929; ATOM: # %bb.0: 3930; ATOM-NEXT: #APP 3931; ATOM-NEXT: fsin # sched: [174:87.00] 3932; ATOM-NEXT: #NO_APP 3933; ATOM-NEXT: retl # sched: [79:39.50] 3934; 3935; SLM-LABEL: test_fsin: 3936; SLM: # %bb.0: 3937; SLM-NEXT: #APP 3938; SLM-NEXT: fsin # sched: [100:1.00] 3939; SLM-NEXT: #NO_APP 3940; SLM-NEXT: retl # sched: [4:1.00] 3941; 3942; SANDY-LABEL: test_fsin: 3943; SANDY: # %bb.0: 3944; SANDY-NEXT: #APP 3945; SANDY-NEXT: fsin # sched: [100:0.33] 3946; SANDY-NEXT: #NO_APP 3947; SANDY-NEXT: retl # sched: [6:1.00] 3948; 3949; HASWELL-LABEL: test_fsin: 3950; HASWELL: # %bb.0: 3951; HASWELL-NEXT: #APP 3952; HASWELL-NEXT: fsin # sched: [100:0.25] 3953; HASWELL-NEXT: #NO_APP 3954; HASWELL-NEXT: retl # sched: [7:1.00] 3955; 3956; BROADWELL-LABEL: test_fsin: 3957; BROADWELL: # %bb.0: 3958; BROADWELL-NEXT: #APP 3959; BROADWELL-NEXT: fsin # sched: [100:0.25] 3960; BROADWELL-NEXT: #NO_APP 3961; BROADWELL-NEXT: retl # sched: [6:0.50] 3962; 3963; SKYLAKE-LABEL: test_fsin: 3964; SKYLAKE: # %bb.0: 3965; SKYLAKE-NEXT: #APP 3966; SKYLAKE-NEXT: fsin # sched: [100:0.25] 3967; SKYLAKE-NEXT: #NO_APP 3968; SKYLAKE-NEXT: retl # sched: [6:0.50] 3969; 3970; SKX-LABEL: test_fsin: 3971; SKX: # %bb.0: 3972; SKX-NEXT: #APP 3973; SKX-NEXT: fsin # sched: [100:0.25] 3974; SKX-NEXT: #NO_APP 3975; SKX-NEXT: retl # sched: [6:0.50] 3976; 3977; BTVER2-LABEL: test_fsin: 3978; BTVER2: # %bb.0: 3979; BTVER2-NEXT: #APP 3980; BTVER2-NEXT: fsin # sched: [100:0.50] 3981; BTVER2-NEXT: #NO_APP 3982; BTVER2-NEXT: retl # sched: [4:1.00] 3983; 3984; ZNVER1-LABEL: test_fsin: 3985; ZNVER1: # %bb.0: 3986; ZNVER1-NEXT: #APP 3987; ZNVER1-NEXT: fsin # sched: [100:0.25] 3988; ZNVER1-NEXT: #NO_APP 3989; ZNVER1-NEXT: retl # sched: [1:0.50] 3990 tail call void asm sideeffect "fsin", ""() nounwind 3991 ret void 3992} 3993 3994define void @test_fsincos() optsize { 3995; GENERIC-LABEL: test_fsincos: 3996; GENERIC: # %bb.0: 3997; GENERIC-NEXT: #APP 3998; GENERIC-NEXT: fsincos 3999; GENERIC-NEXT: #NO_APP 4000; GENERIC-NEXT: retl 4001; 4002; ATOM-LABEL: test_fsincos: 4003; ATOM: # %bb.0: 4004; ATOM-NEXT: #APP 4005; ATOM-NEXT: fsincos # sched: [174:87.00] 4006; ATOM-NEXT: #NO_APP 4007; ATOM-NEXT: retl # sched: [79:39.50] 4008; 4009; SLM-LABEL: test_fsincos: 4010; SLM: # %bb.0: 4011; SLM-NEXT: #APP 4012; SLM-NEXT: fsincos # sched: [100:1.00] 4013; SLM-NEXT: #NO_APP 4014; SLM-NEXT: retl # sched: [4:1.00] 4015; 4016; SANDY-LABEL: test_fsincos: 4017; SANDY: # %bb.0: 4018; SANDY-NEXT: #APP 4019; SANDY-NEXT: fsincos # sched: [100:0.33] 4020; SANDY-NEXT: #NO_APP 4021; SANDY-NEXT: retl # sched: [6:1.00] 4022; 4023; HASWELL-LABEL: test_fsincos: 4024; HASWELL: # %bb.0: 4025; HASWELL-NEXT: #APP 4026; HASWELL-NEXT: fsincos # sched: [100:0.25] 4027; HASWELL-NEXT: #NO_APP 4028; HASWELL-NEXT: retl # sched: [7:1.00] 4029; 4030; BROADWELL-LABEL: test_fsincos: 4031; BROADWELL: # %bb.0: 4032; BROADWELL-NEXT: #APP 4033; BROADWELL-NEXT: fsincos # sched: [100:0.25] 4034; BROADWELL-NEXT: #NO_APP 4035; BROADWELL-NEXT: retl # sched: [6:0.50] 4036; 4037; SKYLAKE-LABEL: test_fsincos: 4038; SKYLAKE: # %bb.0: 4039; SKYLAKE-NEXT: #APP 4040; SKYLAKE-NEXT: fsincos # sched: [100:0.25] 4041; SKYLAKE-NEXT: #NO_APP 4042; SKYLAKE-NEXT: retl # sched: [6:0.50] 4043; 4044; SKX-LABEL: test_fsincos: 4045; SKX: # %bb.0: 4046; SKX-NEXT: #APP 4047; SKX-NEXT: fsincos # sched: [100:0.25] 4048; SKX-NEXT: #NO_APP 4049; SKX-NEXT: retl # sched: [6:0.50] 4050; 4051; BTVER2-LABEL: test_fsincos: 4052; BTVER2: # %bb.0: 4053; BTVER2-NEXT: #APP 4054; BTVER2-NEXT: fsincos # sched: [100:0.50] 4055; BTVER2-NEXT: #NO_APP 4056; BTVER2-NEXT: retl # sched: [4:1.00] 4057; 4058; ZNVER1-LABEL: test_fsincos: 4059; ZNVER1: # %bb.0: 4060; ZNVER1-NEXT: #APP 4061; ZNVER1-NEXT: fsincos # sched: [100:0.25] 4062; ZNVER1-NEXT: #NO_APP 4063; ZNVER1-NEXT: retl # sched: [1:0.50] 4064 tail call void asm sideeffect "fsincos", ""() nounwind 4065 ret void 4066} 4067 4068define void @test_fsqrt() optsize { 4069; GENERIC-LABEL: test_fsqrt: 4070; GENERIC: # %bb.0: 4071; GENERIC-NEXT: #APP 4072; GENERIC-NEXT: fsqrt 4073; GENERIC-NEXT: #NO_APP 4074; GENERIC-NEXT: retl 4075; 4076; ATOM-LABEL: test_fsqrt: 4077; ATOM: # %bb.0: 4078; ATOM-NEXT: #APP 4079; ATOM-NEXT: fsqrt # sched: [71:35.50] 4080; ATOM-NEXT: #NO_APP 4081; ATOM-NEXT: retl # sched: [79:39.50] 4082; 4083; SLM-LABEL: test_fsqrt: 4084; SLM: # %bb.0: 4085; SLM-NEXT: #APP 4086; SLM-NEXT: fsqrt # sched: [40:40.00] 4087; SLM-NEXT: #NO_APP 4088; SLM-NEXT: retl # sched: [4:1.00] 4089; 4090; SANDY-LABEL: test_fsqrt: 4091; SANDY: # %bb.0: 4092; SANDY-NEXT: #APP 4093; SANDY-NEXT: fsqrt # sched: [24:24.00] 4094; SANDY-NEXT: #NO_APP 4095; SANDY-NEXT: retl # sched: [6:1.00] 4096; 4097; HASWELL-LABEL: test_fsqrt: 4098; HASWELL: # %bb.0: 4099; HASWELL-NEXT: #APP 4100; HASWELL-NEXT: fsqrt # sched: [23:17.00] 4101; HASWELL-NEXT: #NO_APP 4102; HASWELL-NEXT: retl # sched: [7:1.00] 4103; 4104; BROADWELL-LABEL: test_fsqrt: 4105; BROADWELL: # %bb.0: 4106; BROADWELL-NEXT: #APP 4107; BROADWELL-NEXT: fsqrt # sched: [23:9.00] 4108; BROADWELL-NEXT: #NO_APP 4109; BROADWELL-NEXT: retl # sched: [6:0.50] 4110; 4111; SKYLAKE-LABEL: test_fsqrt: 4112; SKYLAKE: # %bb.0: 4113; SKYLAKE-NEXT: #APP 4114; SKYLAKE-NEXT: fsqrt # sched: [21:7.00] 4115; SKYLAKE-NEXT: #NO_APP 4116; SKYLAKE-NEXT: retl # sched: [6:0.50] 4117; 4118; SKX-LABEL: test_fsqrt: 4119; SKX: # %bb.0: 4120; SKX-NEXT: #APP 4121; SKX-NEXT: fsqrt # sched: [21:7.00] 4122; SKX-NEXT: #NO_APP 4123; SKX-NEXT: retl # sched: [6:0.50] 4124; 4125; BTVER2-LABEL: test_fsqrt: 4126; BTVER2: # %bb.0: 4127; BTVER2-NEXT: #APP 4128; BTVER2-NEXT: fsqrt # sched: [35:35.00] 4129; BTVER2-NEXT: #NO_APP 4130; BTVER2-NEXT: retl # sched: [4:1.00] 4131; 4132; ZNVER1-LABEL: test_fsqrt: 4133; ZNVER1: # %bb.0: 4134; ZNVER1-NEXT: #APP 4135; ZNVER1-NEXT: fsqrt # sched: [20:20.00] 4136; ZNVER1-NEXT: #NO_APP 4137; ZNVER1-NEXT: retl # sched: [1:0.50] 4138 tail call void asm sideeffect "fsqrt", ""() nounwind 4139 ret void 4140} 4141 4142define void @test_fst_fstp(i16* %a0, i32* %a1, i64 *%a2) optsize { 4143; GENERIC-LABEL: test_fst_fstp: 4144; GENERIC: # %bb.0: 4145; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4146; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4147; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %edx 4148; GENERIC-NEXT: #APP 4149; GENERIC-NEXT: fst %st(0) 4150; GENERIC-NEXT: fsts (%edx) 4151; GENERIC-NEXT: fstl (%ecx) 4152; GENERIC-NEXT: fstp %st(0) 4153; GENERIC-NEXT: fstpl (%edx) 4154; GENERIC-NEXT: fstpl (%ecx) 4155; GENERIC-NEXT: fstpt (%eax) 4156; GENERIC-NEXT: #NO_APP 4157; GENERIC-NEXT: retl 4158; 4159; ATOM-LABEL: test_fst_fstp: 4160; ATOM: # %bb.0: 4161; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4162; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4163; ATOM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [1:1.00] 4164; ATOM-NEXT: #APP 4165; ATOM-NEXT: fst %st(0) # sched: [2:1.00] 4166; ATOM-NEXT: fsts (%edx) # sched: [2:1.00] 4167; ATOM-NEXT: fstl (%ecx) # sched: [2:1.00] 4168; ATOM-NEXT: fstp %st(0) # sched: [2:1.00] 4169; ATOM-NEXT: fstpl (%edx) # sched: [2:1.00] 4170; ATOM-NEXT: fstpl (%ecx) # sched: [2:1.00] 4171; ATOM-NEXT: fstpt (%eax) # sched: [5:2.50] 4172; ATOM-NEXT: #NO_APP 4173; ATOM-NEXT: retl # sched: [79:39.50] 4174; 4175; SLM-LABEL: test_fst_fstp: 4176; SLM: # %bb.0: 4177; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4178; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4179; SLM-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [3:1.00] 4180; SLM-NEXT: #APP 4181; SLM-NEXT: fst %st(0) # sched: [1:0.50] 4182; SLM-NEXT: fsts (%edx) # sched: [1:1.00] 4183; SLM-NEXT: fstl (%ecx) # sched: [1:1.00] 4184; SLM-NEXT: fstp %st(0) # sched: [1:0.50] 4185; SLM-NEXT: fstpl (%edx) # sched: [1:1.00] 4186; SLM-NEXT: fstpl (%ecx) # sched: [1:1.00] 4187; SLM-NEXT: fstpt (%eax) # sched: [1:1.00] 4188; SLM-NEXT: #NO_APP 4189; SLM-NEXT: retl # sched: [4:1.00] 4190; 4191; SANDY-LABEL: test_fst_fstp: 4192; SANDY: # %bb.0: 4193; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4194; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4195; SANDY-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4196; SANDY-NEXT: #APP 4197; SANDY-NEXT: fst %st(0) # sched: [1:1.00] 4198; SANDY-NEXT: fsts (%edx) # sched: [6:1.00] 4199; SANDY-NEXT: fstl (%ecx) # sched: [6:1.00] 4200; SANDY-NEXT: fstp %st(0) # sched: [1:1.00] 4201; SANDY-NEXT: fstpl (%edx) # sched: [6:1.00] 4202; SANDY-NEXT: fstpl (%ecx) # sched: [6:1.00] 4203; SANDY-NEXT: fstpt (%eax) # sched: [6:1.00] 4204; SANDY-NEXT: #NO_APP 4205; SANDY-NEXT: retl # sched: [6:1.00] 4206; 4207; HASWELL-LABEL: test_fst_fstp: 4208; HASWELL: # %bb.0: 4209; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4210; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4211; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4212; HASWELL-NEXT: #APP 4213; HASWELL-NEXT: fst %st(0) # sched: [1:0.50] 4214; HASWELL-NEXT: fsts (%edx) # sched: [1:1.00] 4215; HASWELL-NEXT: fstl (%ecx) # sched: [1:1.00] 4216; HASWELL-NEXT: fstp %st(0) # sched: [1:0.50] 4217; HASWELL-NEXT: fstpl (%edx) # sched: [1:1.00] 4218; HASWELL-NEXT: fstpl (%ecx) # sched: [1:1.00] 4219; HASWELL-NEXT: fstpt (%eax) # sched: [1:1.00] 4220; HASWELL-NEXT: #NO_APP 4221; HASWELL-NEXT: retl # sched: [7:1.00] 4222; 4223; BROADWELL-LABEL: test_fst_fstp: 4224; BROADWELL: # %bb.0: 4225; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4226; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4227; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4228; BROADWELL-NEXT: #APP 4229; BROADWELL-NEXT: fst %st(0) # sched: [1:0.25] 4230; BROADWELL-NEXT: fsts (%edx) # sched: [1:1.00] 4231; BROADWELL-NEXT: fstl (%ecx) # sched: [1:1.00] 4232; BROADWELL-NEXT: fstp %st(0) # sched: [1:0.25] 4233; BROADWELL-NEXT: fstpl (%edx) # sched: [1:1.00] 4234; BROADWELL-NEXT: fstpl (%ecx) # sched: [1:1.00] 4235; BROADWELL-NEXT: fstpt (%eax) # sched: [1:1.00] 4236; BROADWELL-NEXT: #NO_APP 4237; BROADWELL-NEXT: retl # sched: [6:0.50] 4238; 4239; SKYLAKE-LABEL: test_fst_fstp: 4240; SKYLAKE: # %bb.0: 4241; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4242; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4243; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4244; SKYLAKE-NEXT: #APP 4245; SKYLAKE-NEXT: fst %st(0) # sched: [1:0.25] 4246; SKYLAKE-NEXT: fsts (%edx) # sched: [1:1.00] 4247; SKYLAKE-NEXT: fstl (%ecx) # sched: [1:1.00] 4248; SKYLAKE-NEXT: fstp %st(0) # sched: [1:0.25] 4249; SKYLAKE-NEXT: fstpl (%edx) # sched: [1:1.00] 4250; SKYLAKE-NEXT: fstpl (%ecx) # sched: [1:1.00] 4251; SKYLAKE-NEXT: fstpt (%eax) # sched: [1:1.00] 4252; SKYLAKE-NEXT: #NO_APP 4253; SKYLAKE-NEXT: retl # sched: [6:0.50] 4254; 4255; SKX-LABEL: test_fst_fstp: 4256; SKX: # %bb.0: 4257; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4258; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4259; SKX-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:0.50] 4260; SKX-NEXT: #APP 4261; SKX-NEXT: fst %st(0) # sched: [1:0.25] 4262; SKX-NEXT: fsts (%edx) # sched: [1:1.00] 4263; SKX-NEXT: fstl (%ecx) # sched: [1:1.00] 4264; SKX-NEXT: fstp %st(0) # sched: [1:0.25] 4265; SKX-NEXT: fstpl (%edx) # sched: [1:1.00] 4266; SKX-NEXT: fstpl (%ecx) # sched: [1:1.00] 4267; SKX-NEXT: fstpt (%eax) # sched: [1:1.00] 4268; SKX-NEXT: #NO_APP 4269; SKX-NEXT: retl # sched: [6:0.50] 4270; 4271; BTVER2-LABEL: test_fst_fstp: 4272; BTVER2: # %bb.0: 4273; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4274; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 4275; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [5:1.00] 4276; BTVER2-NEXT: #APP 4277; BTVER2-NEXT: fst %st(0) # sched: [1:0.50] 4278; BTVER2-NEXT: fsts (%edx) # sched: [1:1.00] 4279; BTVER2-NEXT: fstl (%ecx) # sched: [1:1.00] 4280; BTVER2-NEXT: fstp %st(0) # sched: [1:0.50] 4281; BTVER2-NEXT: fstpl (%edx) # sched: [1:1.00] 4282; BTVER2-NEXT: fstpl (%ecx) # sched: [1:1.00] 4283; BTVER2-NEXT: fstpt (%eax) # sched: [1:1.00] 4284; BTVER2-NEXT: #NO_APP 4285; BTVER2-NEXT: retl # sched: [4:1.00] 4286; 4287; ZNVER1-LABEL: test_fst_fstp: 4288; ZNVER1: # %bb.0: 4289; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4290; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 4291; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %edx # sched: [8:0.50] 4292; ZNVER1-NEXT: #APP 4293; ZNVER1-NEXT: fst %st(0) # sched: [5:0.50] 4294; ZNVER1-NEXT: fsts (%edx) # sched: [1:0.50] 4295; ZNVER1-NEXT: fstl (%ecx) # sched: [1:0.50] 4296; ZNVER1-NEXT: fstp %st(0) # sched: [5:0.50] 4297; ZNVER1-NEXT: fstpl (%edx) # sched: [1:0.50] 4298; ZNVER1-NEXT: fstpl (%ecx) # sched: [1:0.50] 4299; ZNVER1-NEXT: fstpt (%eax) # sched: [5:0.50] 4300; ZNVER1-NEXT: #NO_APP 4301; ZNVER1-NEXT: retl # sched: [1:0.50] 4302 tail call void asm sideeffect "fst %st(0) \0A\09 fsts $0 \0A\09 fstl $1 \0A\09 fstp %st(0) \0A\09 fstpl $0 \0A\09 fstpl $1 \0A\09 fstpt $2", "*m,*m,*m"(i16* %a0, i32* %a1, i64 *%a2) nounwind 4303 ret void 4304} 4305 4306define void @test_fstcw_fstenv_fstsw(i8* %a0) optsize { 4307; GENERIC-LABEL: test_fstcw_fstenv_fstsw: 4308; GENERIC: # %bb.0: 4309; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4310; GENERIC-NEXT: #APP 4311; GENERIC-NEXT: wait 4312; GENERIC-NEXT: fnstcw (%eax) 4313; GENERIC-NEXT: wait 4314; GENERIC-NEXT: fnstenv (%eax) 4315; GENERIC-NEXT: wait 4316; GENERIC-NEXT: fnstsw (%eax) 4317; GENERIC-NEXT: #NO_APP 4318; GENERIC-NEXT: retl 4319; 4320; ATOM-LABEL: test_fstcw_fstenv_fstsw: 4321; ATOM: # %bb.0: 4322; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4323; ATOM-NEXT: #APP 4324; ATOM-NEXT: wait # sched: [1:0.50] 4325; ATOM-NEXT: fnstcw (%eax) # sched: [8:4.00] 4326; ATOM-NEXT: wait # sched: [1:0.50] 4327; ATOM-NEXT: fnstenv (%eax) # sched: [100:0.50] 4328; ATOM-NEXT: wait # sched: [1:0.50] 4329; ATOM-NEXT: fnstsw (%eax) # sched: [100:0.50] 4330; ATOM-NEXT: #NO_APP 4331; ATOM-NEXT: retl # sched: [79:39.50] 4332; 4333; SLM-LABEL: test_fstcw_fstenv_fstsw: 4334; SLM: # %bb.0: 4335; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4336; SLM-NEXT: #APP 4337; SLM-NEXT: wait # sched: [100:1.00] 4338; SLM-NEXT: fnstcw (%eax) # sched: [1:0.50] 4339; SLM-NEXT: wait # sched: [100:1.00] 4340; SLM-NEXT: fnstenv (%eax) # sched: [100:1.00] 4341; SLM-NEXT: wait # sched: [100:1.00] 4342; SLM-NEXT: fnstsw (%eax) # sched: [100:1.00] 4343; SLM-NEXT: #NO_APP 4344; SLM-NEXT: retl # sched: [4:1.00] 4345; 4346; SANDY-LABEL: test_fstcw_fstenv_fstsw: 4347; SANDY: # %bb.0: 4348; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4349; SANDY-NEXT: #APP 4350; SANDY-NEXT: wait # sched: [100:0.33] 4351; SANDY-NEXT: fnstcw (%eax) # sched: [7:1.00] 4352; SANDY-NEXT: wait # sched: [100:0.33] 4353; SANDY-NEXT: fnstenv (%eax) # sched: [100:0.33] 4354; SANDY-NEXT: wait # sched: [100:0.33] 4355; SANDY-NEXT: fnstsw (%eax) # sched: [7:1.00] 4356; SANDY-NEXT: #NO_APP 4357; SANDY-NEXT: retl # sched: [6:1.00] 4358; 4359; HASWELL-LABEL: test_fstcw_fstenv_fstsw: 4360; HASWELL: # %bb.0: 4361; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4362; HASWELL-NEXT: #APP 4363; HASWELL-NEXT: wait # sched: [2:0.50] 4364; HASWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] 4365; HASWELL-NEXT: wait # sched: [2:0.50] 4366; HASWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] 4367; HASWELL-NEXT: wait # sched: [2:0.50] 4368; HASWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] 4369; HASWELL-NEXT: #NO_APP 4370; HASWELL-NEXT: retl # sched: [7:1.00] 4371; 4372; BROADWELL-LABEL: test_fstcw_fstenv_fstsw: 4373; BROADWELL: # %bb.0: 4374; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4375; BROADWELL-NEXT: #APP 4376; BROADWELL-NEXT: wait # sched: [2:0.50] 4377; BROADWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] 4378; BROADWELL-NEXT: wait # sched: [2:0.50] 4379; BROADWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] 4380; BROADWELL-NEXT: wait # sched: [2:0.50] 4381; BROADWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] 4382; BROADWELL-NEXT: #NO_APP 4383; BROADWELL-NEXT: retl # sched: [6:0.50] 4384; 4385; SKYLAKE-LABEL: test_fstcw_fstenv_fstsw: 4386; SKYLAKE: # %bb.0: 4387; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4388; SKYLAKE-NEXT: #APP 4389; SKYLAKE-NEXT: wait # sched: [2:0.50] 4390; SKYLAKE-NEXT: fnstcw (%eax) # sched: [2:1.00] 4391; SKYLAKE-NEXT: wait # sched: [2:0.50] 4392; SKYLAKE-NEXT: fnstenv (%eax) # sched: [106:19.50] 4393; SKYLAKE-NEXT: wait # sched: [2:0.50] 4394; SKYLAKE-NEXT: fnstsw (%eax) # sched: [3:1.00] 4395; SKYLAKE-NEXT: #NO_APP 4396; SKYLAKE-NEXT: retl # sched: [6:0.50] 4397; 4398; SKX-LABEL: test_fstcw_fstenv_fstsw: 4399; SKX: # %bb.0: 4400; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4401; SKX-NEXT: #APP 4402; SKX-NEXT: wait # sched: [2:0.50] 4403; SKX-NEXT: fnstcw (%eax) # sched: [2:1.00] 4404; SKX-NEXT: wait # sched: [2:0.50] 4405; SKX-NEXT: fnstenv (%eax) # sched: [106:19.50] 4406; SKX-NEXT: wait # sched: [2:0.50] 4407; SKX-NEXT: fnstsw (%eax) # sched: [3:1.00] 4408; SKX-NEXT: #NO_APP 4409; SKX-NEXT: retl # sched: [6:0.50] 4410; 4411; BTVER2-LABEL: test_fstcw_fstenv_fstsw: 4412; BTVER2: # %bb.0: 4413; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4414; BTVER2-NEXT: #APP 4415; BTVER2-NEXT: wait # sched: [100:0.50] 4416; BTVER2-NEXT: fnstcw (%eax) # sched: [1:0.50] 4417; BTVER2-NEXT: wait # sched: [100:0.50] 4418; BTVER2-NEXT: fnstenv (%eax) # sched: [100:0.50] 4419; BTVER2-NEXT: wait # sched: [100:0.50] 4420; BTVER2-NEXT: fnstsw (%eax) # sched: [100:0.50] 4421; BTVER2-NEXT: #NO_APP 4422; BTVER2-NEXT: retl # sched: [4:1.00] 4423; 4424; ZNVER1-LABEL: test_fstcw_fstenv_fstsw: 4425; ZNVER1: # %bb.0: 4426; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4427; ZNVER1-NEXT: #APP 4428; ZNVER1-NEXT: wait # sched: [1:1.00] 4429; ZNVER1-NEXT: fnstcw (%eax) # sched: [100:0.25] 4430; ZNVER1-NEXT: wait # sched: [1:1.00] 4431; ZNVER1-NEXT: fnstenv (%eax) # sched: [100:0.25] 4432; ZNVER1-NEXT: wait # sched: [1:1.00] 4433; ZNVER1-NEXT: fnstsw (%eax) # sched: [100:0.25] 4434; ZNVER1-NEXT: #NO_APP 4435; ZNVER1-NEXT: retl # sched: [1:0.50] 4436 tail call void asm sideeffect "fstcw $0 \0A\09 fstenv $0 \0A\09 fstsw $0", "*m"(i8* %a0) nounwind 4437 ret void 4438} 4439 4440define void @test_fnstcw_fnstenv_fnstsw(i8* %a0) optsize { 4441; GENERIC-LABEL: test_fnstcw_fnstenv_fnstsw: 4442; GENERIC: # %bb.0: 4443; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4444; GENERIC-NEXT: #APP 4445; GENERIC-NEXT: fnstcw (%eax) 4446; GENERIC-NEXT: fnstenv (%eax) 4447; GENERIC-NEXT: fnstsw (%eax) 4448; GENERIC-NEXT: #NO_APP 4449; GENERIC-NEXT: retl 4450; 4451; ATOM-LABEL: test_fnstcw_fnstenv_fnstsw: 4452; ATOM: # %bb.0: 4453; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4454; ATOM-NEXT: #APP 4455; ATOM-NEXT: fnstcw (%eax) # sched: [8:4.00] 4456; ATOM-NEXT: fnstenv (%eax) # sched: [100:0.50] 4457; ATOM-NEXT: fnstsw (%eax) # sched: [100:0.50] 4458; ATOM-NEXT: #NO_APP 4459; ATOM-NEXT: retl # sched: [79:39.50] 4460; 4461; SLM-LABEL: test_fnstcw_fnstenv_fnstsw: 4462; SLM: # %bb.0: 4463; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4464; SLM-NEXT: #APP 4465; SLM-NEXT: fnstcw (%eax) # sched: [1:0.50] 4466; SLM-NEXT: fnstenv (%eax) # sched: [100:1.00] 4467; SLM-NEXT: fnstsw (%eax) # sched: [100:1.00] 4468; SLM-NEXT: #NO_APP 4469; SLM-NEXT: retl # sched: [4:1.00] 4470; 4471; SANDY-LABEL: test_fnstcw_fnstenv_fnstsw: 4472; SANDY: # %bb.0: 4473; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4474; SANDY-NEXT: #APP 4475; SANDY-NEXT: fnstcw (%eax) # sched: [7:1.00] 4476; SANDY-NEXT: fnstenv (%eax) # sched: [100:0.33] 4477; SANDY-NEXT: fnstsw (%eax) # sched: [7:1.00] 4478; SANDY-NEXT: #NO_APP 4479; SANDY-NEXT: retl # sched: [6:1.00] 4480; 4481; HASWELL-LABEL: test_fnstcw_fnstenv_fnstsw: 4482; HASWELL: # %bb.0: 4483; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4484; HASWELL-NEXT: #APP 4485; HASWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] 4486; HASWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] 4487; HASWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] 4488; HASWELL-NEXT: #NO_APP 4489; HASWELL-NEXT: retl # sched: [7:1.00] 4490; 4491; BROADWELL-LABEL: test_fnstcw_fnstenv_fnstsw: 4492; BROADWELL: # %bb.0: 4493; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4494; BROADWELL-NEXT: #APP 4495; BROADWELL-NEXT: fnstcw (%eax) # sched: [2:1.00] 4496; BROADWELL-NEXT: fnstenv (%eax) # sched: [115:19.50] 4497; BROADWELL-NEXT: fnstsw (%eax) # sched: [4:1.00] 4498; BROADWELL-NEXT: #NO_APP 4499; BROADWELL-NEXT: retl # sched: [6:0.50] 4500; 4501; SKYLAKE-LABEL: test_fnstcw_fnstenv_fnstsw: 4502; SKYLAKE: # %bb.0: 4503; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4504; SKYLAKE-NEXT: #APP 4505; SKYLAKE-NEXT: fnstcw (%eax) # sched: [2:1.00] 4506; SKYLAKE-NEXT: fnstenv (%eax) # sched: [106:19.50] 4507; SKYLAKE-NEXT: fnstsw (%eax) # sched: [3:1.00] 4508; SKYLAKE-NEXT: #NO_APP 4509; SKYLAKE-NEXT: retl # sched: [6:0.50] 4510; 4511; SKX-LABEL: test_fnstcw_fnstenv_fnstsw: 4512; SKX: # %bb.0: 4513; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4514; SKX-NEXT: #APP 4515; SKX-NEXT: fnstcw (%eax) # sched: [2:1.00] 4516; SKX-NEXT: fnstenv (%eax) # sched: [106:19.50] 4517; SKX-NEXT: fnstsw (%eax) # sched: [3:1.00] 4518; SKX-NEXT: #NO_APP 4519; SKX-NEXT: retl # sched: [6:0.50] 4520; 4521; BTVER2-LABEL: test_fnstcw_fnstenv_fnstsw: 4522; BTVER2: # %bb.0: 4523; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4524; BTVER2-NEXT: #APP 4525; BTVER2-NEXT: fnstcw (%eax) # sched: [1:0.50] 4526; BTVER2-NEXT: fnstenv (%eax) # sched: [100:0.50] 4527; BTVER2-NEXT: fnstsw (%eax) # sched: [100:0.50] 4528; BTVER2-NEXT: #NO_APP 4529; BTVER2-NEXT: retl # sched: [4:1.00] 4530; 4531; ZNVER1-LABEL: test_fnstcw_fnstenv_fnstsw: 4532; ZNVER1: # %bb.0: 4533; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4534; ZNVER1-NEXT: #APP 4535; ZNVER1-NEXT: fnstcw (%eax) # sched: [100:0.25] 4536; ZNVER1-NEXT: fnstenv (%eax) # sched: [100:0.25] 4537; ZNVER1-NEXT: fnstsw (%eax) # sched: [100:0.25] 4538; ZNVER1-NEXT: #NO_APP 4539; ZNVER1-NEXT: retl # sched: [1:0.50] 4540 tail call void asm sideeffect "fnstcw $0 \0A\09 fnstenv $0 \0A\09 fnstsw $0", "*m"(i8* %a0) nounwind 4541 ret void 4542} 4543 4544define void @test_fsub(float *%a0, double *%a1) optsize { 4545; GENERIC-LABEL: test_fsub: 4546; GENERIC: # %bb.0: 4547; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4548; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4549; GENERIC-NEXT: #APP 4550; GENERIC-NEXT: fsub %st(0), %st(1) 4551; GENERIC-NEXT: fsub %st(2) 4552; GENERIC-NEXT: fsubs (%ecx) 4553; GENERIC-NEXT: fsubl (%eax) 4554; GENERIC-NEXT: #NO_APP 4555; GENERIC-NEXT: retl 4556; 4557; ATOM-LABEL: test_fsub: 4558; ATOM: # %bb.0: 4559; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4560; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4561; ATOM-NEXT: #APP 4562; ATOM-NEXT: fsub %st(0), %st(1) # sched: [5:5.00] 4563; ATOM-NEXT: fsub %st(2) # sched: [5:5.00] 4564; ATOM-NEXT: fsubs (%ecx) # sched: [5:5.00] 4565; ATOM-NEXT: fsubl (%eax) # sched: [5:5.00] 4566; ATOM-NEXT: #NO_APP 4567; ATOM-NEXT: retl # sched: [79:39.50] 4568; 4569; SLM-LABEL: test_fsub: 4570; SLM: # %bb.0: 4571; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4572; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4573; SLM-NEXT: #APP 4574; SLM-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4575; SLM-NEXT: fsub %st(2) # sched: [3:1.00] 4576; SLM-NEXT: fsubs (%ecx) # sched: [6:1.00] 4577; SLM-NEXT: fsubl (%eax) # sched: [6:1.00] 4578; SLM-NEXT: #NO_APP 4579; SLM-NEXT: retl # sched: [4:1.00] 4580; 4581; SANDY-LABEL: test_fsub: 4582; SANDY: # %bb.0: 4583; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4584; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4585; SANDY-NEXT: #APP 4586; SANDY-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4587; SANDY-NEXT: fsub %st(2) # sched: [3:1.00] 4588; SANDY-NEXT: fsubs (%ecx) # sched: [10:1.00] 4589; SANDY-NEXT: fsubl (%eax) # sched: [10:1.00] 4590; SANDY-NEXT: #NO_APP 4591; SANDY-NEXT: retl # sched: [6:1.00] 4592; 4593; HASWELL-LABEL: test_fsub: 4594; HASWELL: # %bb.0: 4595; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4596; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4597; HASWELL-NEXT: #APP 4598; HASWELL-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4599; HASWELL-NEXT: fsub %st(2) # sched: [3:1.00] 4600; HASWELL-NEXT: fsubs (%ecx) # sched: [10:1.00] 4601; HASWELL-NEXT: fsubl (%eax) # sched: [10:1.00] 4602; HASWELL-NEXT: #NO_APP 4603; HASWELL-NEXT: retl # sched: [7:1.00] 4604; 4605; BROADWELL-LABEL: test_fsub: 4606; BROADWELL: # %bb.0: 4607; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4608; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4609; BROADWELL-NEXT: #APP 4610; BROADWELL-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4611; BROADWELL-NEXT: fsub %st(2) # sched: [3:1.00] 4612; BROADWELL-NEXT: fsubs (%ecx) # sched: [9:1.00] 4613; BROADWELL-NEXT: fsubl (%eax) # sched: [9:1.00] 4614; BROADWELL-NEXT: #NO_APP 4615; BROADWELL-NEXT: retl # sched: [6:0.50] 4616; 4617; SKYLAKE-LABEL: test_fsub: 4618; SKYLAKE: # %bb.0: 4619; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4620; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4621; SKYLAKE-NEXT: #APP 4622; SKYLAKE-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4623; SKYLAKE-NEXT: fsub %st(2) # sched: [3:1.00] 4624; SKYLAKE-NEXT: fsubs (%ecx) # sched: [10:1.00] 4625; SKYLAKE-NEXT: fsubl (%eax) # sched: [10:1.00] 4626; SKYLAKE-NEXT: #NO_APP 4627; SKYLAKE-NEXT: retl # sched: [6:0.50] 4628; 4629; SKX-LABEL: test_fsub: 4630; SKX: # %bb.0: 4631; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4632; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4633; SKX-NEXT: #APP 4634; SKX-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4635; SKX-NEXT: fsub %st(2) # sched: [3:1.00] 4636; SKX-NEXT: fsubs (%ecx) # sched: [10:1.00] 4637; SKX-NEXT: fsubl (%eax) # sched: [10:1.00] 4638; SKX-NEXT: #NO_APP 4639; SKX-NEXT: retl # sched: [6:0.50] 4640; 4641; BTVER2-LABEL: test_fsub: 4642; BTVER2: # %bb.0: 4643; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4644; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 4645; BTVER2-NEXT: #APP 4646; BTVER2-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4647; BTVER2-NEXT: fsub %st(2) # sched: [3:1.00] 4648; BTVER2-NEXT: fsubs (%ecx) # sched: [8:1.00] 4649; BTVER2-NEXT: fsubl (%eax) # sched: [8:1.00] 4650; BTVER2-NEXT: #NO_APP 4651; BTVER2-NEXT: retl # sched: [4:1.00] 4652; 4653; ZNVER1-LABEL: test_fsub: 4654; ZNVER1: # %bb.0: 4655; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4656; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 4657; ZNVER1-NEXT: #APP 4658; ZNVER1-NEXT: fsub %st(0), %st(1) # sched: [3:1.00] 4659; ZNVER1-NEXT: fsub %st(2) # sched: [3:1.00] 4660; ZNVER1-NEXT: fsubs (%ecx) # sched: [10:1.00] 4661; ZNVER1-NEXT: fsubl (%eax) # sched: [10:1.00] 4662; ZNVER1-NEXT: #NO_APP 4663; ZNVER1-NEXT: retl # sched: [1:0.50] 4664 tail call void asm sideeffect "fsub %st(0), %st(1) \0A\09 fsub %st(2), %st(0) \0A\09 fsubs $0 \0A\09 fsubl $1", "*m,*m"(float *%a0, double *%a1) nounwind 4665 ret void 4666} 4667 4668define void @test_fsubp_fisub(i16 *%a0, i32 *%a1) optsize { 4669; GENERIC-LABEL: test_fsubp_fisub: 4670; GENERIC: # %bb.0: 4671; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4672; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4673; GENERIC-NEXT: #APP 4674; GENERIC-NEXT: fsubp %st(1) 4675; GENERIC-NEXT: fsubp %st(2) 4676; GENERIC-NEXT: fisubs (%ecx) 4677; GENERIC-NEXT: fisubl (%eax) 4678; GENERIC-NEXT: #NO_APP 4679; GENERIC-NEXT: retl 4680; 4681; ATOM-LABEL: test_fsubp_fisub: 4682; ATOM: # %bb.0: 4683; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4684; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4685; ATOM-NEXT: #APP 4686; ATOM-NEXT: fsubp %st(1) # sched: [5:5.00] 4687; ATOM-NEXT: fsubp %st(2) # sched: [5:5.00] 4688; ATOM-NEXT: fisubs (%ecx) # sched: [5:5.00] 4689; ATOM-NEXT: fisubl (%eax) # sched: [5:5.00] 4690; ATOM-NEXT: #NO_APP 4691; ATOM-NEXT: retl # sched: [79:39.50] 4692; 4693; SLM-LABEL: test_fsubp_fisub: 4694; SLM: # %bb.0: 4695; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4696; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4697; SLM-NEXT: #APP 4698; SLM-NEXT: fsubp %st(1) # sched: [3:1.00] 4699; SLM-NEXT: fsubp %st(2) # sched: [3:1.00] 4700; SLM-NEXT: fisubs (%ecx) # sched: [6:1.00] 4701; SLM-NEXT: fisubl (%eax) # sched: [6:1.00] 4702; SLM-NEXT: #NO_APP 4703; SLM-NEXT: retl # sched: [4:1.00] 4704; 4705; SANDY-LABEL: test_fsubp_fisub: 4706; SANDY: # %bb.0: 4707; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4708; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4709; SANDY-NEXT: #APP 4710; SANDY-NEXT: fsubp %st(1) # sched: [3:1.00] 4711; SANDY-NEXT: fsubp %st(2) # sched: [3:1.00] 4712; SANDY-NEXT: fisubs (%ecx) # sched: [13:2.00] 4713; SANDY-NEXT: fisubl (%eax) # sched: [13:2.00] 4714; SANDY-NEXT: #NO_APP 4715; SANDY-NEXT: retl # sched: [6:1.00] 4716; 4717; HASWELL-LABEL: test_fsubp_fisub: 4718; HASWELL: # %bb.0: 4719; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4720; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4721; HASWELL-NEXT: #APP 4722; HASWELL-NEXT: fsubp %st(1) # sched: [3:1.00] 4723; HASWELL-NEXT: fsubp %st(2) # sched: [3:1.00] 4724; HASWELL-NEXT: fisubs (%ecx) # sched: [13:2.00] 4725; HASWELL-NEXT: fisubl (%eax) # sched: [13:2.00] 4726; HASWELL-NEXT: #NO_APP 4727; HASWELL-NEXT: retl # sched: [7:1.00] 4728; 4729; BROADWELL-LABEL: test_fsubp_fisub: 4730; BROADWELL: # %bb.0: 4731; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4732; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4733; BROADWELL-NEXT: #APP 4734; BROADWELL-NEXT: fsubp %st(1) # sched: [3:1.00] 4735; BROADWELL-NEXT: fsubp %st(2) # sched: [3:1.00] 4736; BROADWELL-NEXT: fisubs (%ecx) # sched: [12:2.00] 4737; BROADWELL-NEXT: fisubl (%eax) # sched: [12:2.00] 4738; BROADWELL-NEXT: #NO_APP 4739; BROADWELL-NEXT: retl # sched: [6:0.50] 4740; 4741; SKYLAKE-LABEL: test_fsubp_fisub: 4742; SKYLAKE: # %bb.0: 4743; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4744; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4745; SKYLAKE-NEXT: #APP 4746; SKYLAKE-NEXT: fsubp %st(1) # sched: [3:1.00] 4747; SKYLAKE-NEXT: fsubp %st(2) # sched: [3:1.00] 4748; SKYLAKE-NEXT: fisubs (%ecx) # sched: [13:2.00] 4749; SKYLAKE-NEXT: fisubl (%eax) # sched: [13:2.00] 4750; SKYLAKE-NEXT: #NO_APP 4751; SKYLAKE-NEXT: retl # sched: [6:0.50] 4752; 4753; SKX-LABEL: test_fsubp_fisub: 4754; SKX: # %bb.0: 4755; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4756; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4757; SKX-NEXT: #APP 4758; SKX-NEXT: fsubp %st(1) # sched: [3:1.00] 4759; SKX-NEXT: fsubp %st(2) # sched: [3:1.00] 4760; SKX-NEXT: fisubs (%ecx) # sched: [13:2.00] 4761; SKX-NEXT: fisubl (%eax) # sched: [13:2.00] 4762; SKX-NEXT: #NO_APP 4763; SKX-NEXT: retl # sched: [6:0.50] 4764; 4765; BTVER2-LABEL: test_fsubp_fisub: 4766; BTVER2: # %bb.0: 4767; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4768; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 4769; BTVER2-NEXT: #APP 4770; BTVER2-NEXT: fsubp %st(1) # sched: [3:1.00] 4771; BTVER2-NEXT: fsubp %st(2) # sched: [3:1.00] 4772; BTVER2-NEXT: fisubs (%ecx) # sched: [8:1.00] 4773; BTVER2-NEXT: fisubl (%eax) # sched: [8:1.00] 4774; BTVER2-NEXT: #NO_APP 4775; BTVER2-NEXT: retl # sched: [4:1.00] 4776; 4777; ZNVER1-LABEL: test_fsubp_fisub: 4778; ZNVER1: # %bb.0: 4779; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4780; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 4781; ZNVER1-NEXT: #APP 4782; ZNVER1-NEXT: fsubp %st(1) # sched: [3:1.00] 4783; ZNVER1-NEXT: fsubp %st(2) # sched: [3:1.00] 4784; ZNVER1-NEXT: fisubs (%ecx) # sched: [10:1.00] 4785; ZNVER1-NEXT: fisubl (%eax) # sched: [10:1.00] 4786; ZNVER1-NEXT: #NO_APP 4787; ZNVER1-NEXT: retl # sched: [1:0.50] 4788 tail call void asm sideeffect "fsubp \0A\09 fsubp %st(2), %st(0) \0A\09 fisubs $0 \0A\09 fisubl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 4789 ret void 4790} 4791 4792define void @test_fsubr(float *%a0, double *%a1) optsize { 4793; GENERIC-LABEL: test_fsubr: 4794; GENERIC: # %bb.0: 4795; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4796; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4797; GENERIC-NEXT: #APP 4798; GENERIC-NEXT: fsubr %st(0), %st(1) 4799; GENERIC-NEXT: fsubr %st(2) 4800; GENERIC-NEXT: fsubrs (%ecx) 4801; GENERIC-NEXT: fsubrl (%eax) 4802; GENERIC-NEXT: #NO_APP 4803; GENERIC-NEXT: retl 4804; 4805; ATOM-LABEL: test_fsubr: 4806; ATOM: # %bb.0: 4807; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4808; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4809; ATOM-NEXT: #APP 4810; ATOM-NEXT: fsubr %st(0), %st(1) # sched: [5:5.00] 4811; ATOM-NEXT: fsubr %st(2) # sched: [5:5.00] 4812; ATOM-NEXT: fsubrs (%ecx) # sched: [5:5.00] 4813; ATOM-NEXT: fsubrl (%eax) # sched: [5:5.00] 4814; ATOM-NEXT: #NO_APP 4815; ATOM-NEXT: retl # sched: [79:39.50] 4816; 4817; SLM-LABEL: test_fsubr: 4818; SLM: # %bb.0: 4819; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4820; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4821; SLM-NEXT: #APP 4822; SLM-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4823; SLM-NEXT: fsubr %st(2) # sched: [3:1.00] 4824; SLM-NEXT: fsubrs (%ecx) # sched: [6:1.00] 4825; SLM-NEXT: fsubrl (%eax) # sched: [6:1.00] 4826; SLM-NEXT: #NO_APP 4827; SLM-NEXT: retl # sched: [4:1.00] 4828; 4829; SANDY-LABEL: test_fsubr: 4830; SANDY: # %bb.0: 4831; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4832; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4833; SANDY-NEXT: #APP 4834; SANDY-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4835; SANDY-NEXT: fsubr %st(2) # sched: [3:1.00] 4836; SANDY-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4837; SANDY-NEXT: fsubrl (%eax) # sched: [10:1.00] 4838; SANDY-NEXT: #NO_APP 4839; SANDY-NEXT: retl # sched: [6:1.00] 4840; 4841; HASWELL-LABEL: test_fsubr: 4842; HASWELL: # %bb.0: 4843; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4844; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4845; HASWELL-NEXT: #APP 4846; HASWELL-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4847; HASWELL-NEXT: fsubr %st(2) # sched: [3:1.00] 4848; HASWELL-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4849; HASWELL-NEXT: fsubrl (%eax) # sched: [10:1.00] 4850; HASWELL-NEXT: #NO_APP 4851; HASWELL-NEXT: retl # sched: [7:1.00] 4852; 4853; BROADWELL-LABEL: test_fsubr: 4854; BROADWELL: # %bb.0: 4855; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4856; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4857; BROADWELL-NEXT: #APP 4858; BROADWELL-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4859; BROADWELL-NEXT: fsubr %st(2) # sched: [3:1.00] 4860; BROADWELL-NEXT: fsubrs (%ecx) # sched: [9:1.00] 4861; BROADWELL-NEXT: fsubrl (%eax) # sched: [9:1.00] 4862; BROADWELL-NEXT: #NO_APP 4863; BROADWELL-NEXT: retl # sched: [6:0.50] 4864; 4865; SKYLAKE-LABEL: test_fsubr: 4866; SKYLAKE: # %bb.0: 4867; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4868; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4869; SKYLAKE-NEXT: #APP 4870; SKYLAKE-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4871; SKYLAKE-NEXT: fsubr %st(2) # sched: [3:1.00] 4872; SKYLAKE-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4873; SKYLAKE-NEXT: fsubrl (%eax) # sched: [10:1.00] 4874; SKYLAKE-NEXT: #NO_APP 4875; SKYLAKE-NEXT: retl # sched: [6:0.50] 4876; 4877; SKX-LABEL: test_fsubr: 4878; SKX: # %bb.0: 4879; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4880; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4881; SKX-NEXT: #APP 4882; SKX-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4883; SKX-NEXT: fsubr %st(2) # sched: [3:1.00] 4884; SKX-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4885; SKX-NEXT: fsubrl (%eax) # sched: [10:1.00] 4886; SKX-NEXT: #NO_APP 4887; SKX-NEXT: retl # sched: [6:0.50] 4888; 4889; BTVER2-LABEL: test_fsubr: 4890; BTVER2: # %bb.0: 4891; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 4892; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 4893; BTVER2-NEXT: #APP 4894; BTVER2-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4895; BTVER2-NEXT: fsubr %st(2) # sched: [3:1.00] 4896; BTVER2-NEXT: fsubrs (%ecx) # sched: [8:1.00] 4897; BTVER2-NEXT: fsubrl (%eax) # sched: [8:1.00] 4898; BTVER2-NEXT: #NO_APP 4899; BTVER2-NEXT: retl # sched: [4:1.00] 4900; 4901; ZNVER1-LABEL: test_fsubr: 4902; ZNVER1: # %bb.0: 4903; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 4904; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 4905; ZNVER1-NEXT: #APP 4906; ZNVER1-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00] 4907; ZNVER1-NEXT: fsubr %st(2) # sched: [3:1.00] 4908; ZNVER1-NEXT: fsubrs (%ecx) # sched: [10:1.00] 4909; ZNVER1-NEXT: fsubrl (%eax) # sched: [10:1.00] 4910; ZNVER1-NEXT: #NO_APP 4911; ZNVER1-NEXT: retl # sched: [1:0.50] 4912 tail call void asm sideeffect "fsubr %st(0), %st(1) \0A\09 fsubr %st(2), %st(0) \0A\09 fsubrs $0 \0A\09 fsubrl $1", "*m,*m"(float *%a0, double *%a1) nounwind 4913 ret void 4914} 4915 4916define void @test_fsubrp_fisubr(i16 *%a0, i32 *%a1) optsize { 4917; GENERIC-LABEL: test_fsubrp_fisubr: 4918; GENERIC: # %bb.0: 4919; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4920; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4921; GENERIC-NEXT: #APP 4922; GENERIC-NEXT: fsubrp %st(1) 4923; GENERIC-NEXT: fsubrp %st(2) 4924; GENERIC-NEXT: fisubrs (%ecx) 4925; GENERIC-NEXT: fisubrl (%eax) 4926; GENERIC-NEXT: #NO_APP 4927; GENERIC-NEXT: retl 4928; 4929; ATOM-LABEL: test_fsubrp_fisubr: 4930; ATOM: # %bb.0: 4931; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 4932; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] 4933; ATOM-NEXT: #APP 4934; ATOM-NEXT: fsubrp %st(1) # sched: [5:5.00] 4935; ATOM-NEXT: fsubrp %st(2) # sched: [5:5.00] 4936; ATOM-NEXT: fisubrs (%ecx) # sched: [5:5.00] 4937; ATOM-NEXT: fisubrl (%eax) # sched: [5:5.00] 4938; ATOM-NEXT: #NO_APP 4939; ATOM-NEXT: retl # sched: [79:39.50] 4940; 4941; SLM-LABEL: test_fsubrp_fisubr: 4942; SLM: # %bb.0: 4943; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 4944; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00] 4945; SLM-NEXT: #APP 4946; SLM-NEXT: fsubrp %st(1) # sched: [3:1.00] 4947; SLM-NEXT: fsubrp %st(2) # sched: [3:1.00] 4948; SLM-NEXT: fisubrs (%ecx) # sched: [6:1.00] 4949; SLM-NEXT: fisubrl (%eax) # sched: [6:1.00] 4950; SLM-NEXT: #NO_APP 4951; SLM-NEXT: retl # sched: [4:1.00] 4952; 4953; SANDY-LABEL: test_fsubrp_fisubr: 4954; SANDY: # %bb.0: 4955; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4956; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4957; SANDY-NEXT: #APP 4958; SANDY-NEXT: fsubrp %st(1) # sched: [3:1.00] 4959; SANDY-NEXT: fsubrp %st(2) # sched: [3:1.00] 4960; SANDY-NEXT: fisubrs (%ecx) # sched: [13:2.00] 4961; SANDY-NEXT: fisubrl (%eax) # sched: [13:2.00] 4962; SANDY-NEXT: #NO_APP 4963; SANDY-NEXT: retl # sched: [6:1.00] 4964; 4965; HASWELL-LABEL: test_fsubrp_fisubr: 4966; HASWELL: # %bb.0: 4967; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4968; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4969; HASWELL-NEXT: #APP 4970; HASWELL-NEXT: fsubrp %st(1) # sched: [3:1.00] 4971; HASWELL-NEXT: fsubrp %st(2) # sched: [3:1.00] 4972; HASWELL-NEXT: fisubrs (%ecx) # sched: [13:2.00] 4973; HASWELL-NEXT: fisubrl (%eax) # sched: [13:2.00] 4974; HASWELL-NEXT: #NO_APP 4975; HASWELL-NEXT: retl # sched: [7:1.00] 4976; 4977; BROADWELL-LABEL: test_fsubrp_fisubr: 4978; BROADWELL: # %bb.0: 4979; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4980; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4981; BROADWELL-NEXT: #APP 4982; BROADWELL-NEXT: fsubrp %st(1) # sched: [3:1.00] 4983; BROADWELL-NEXT: fsubrp %st(2) # sched: [3:1.00] 4984; BROADWELL-NEXT: fisubrs (%ecx) # sched: [12:2.00] 4985; BROADWELL-NEXT: fisubrl (%eax) # sched: [12:2.00] 4986; BROADWELL-NEXT: #NO_APP 4987; BROADWELL-NEXT: retl # sched: [6:0.50] 4988; 4989; SKYLAKE-LABEL: test_fsubrp_fisubr: 4990; SKYLAKE: # %bb.0: 4991; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 4992; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 4993; SKYLAKE-NEXT: #APP 4994; SKYLAKE-NEXT: fsubrp %st(1) # sched: [3:1.00] 4995; SKYLAKE-NEXT: fsubrp %st(2) # sched: [3:1.00] 4996; SKYLAKE-NEXT: fisubrs (%ecx) # sched: [13:2.00] 4997; SKYLAKE-NEXT: fisubrl (%eax) # sched: [13:2.00] 4998; SKYLAKE-NEXT: #NO_APP 4999; SKYLAKE-NEXT: retl # sched: [6:0.50] 5000; 5001; SKX-LABEL: test_fsubrp_fisubr: 5002; SKX: # %bb.0: 5003; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5004; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50] 5005; SKX-NEXT: #APP 5006; SKX-NEXT: fsubrp %st(1) # sched: [3:1.00] 5007; SKX-NEXT: fsubrp %st(2) # sched: [3:1.00] 5008; SKX-NEXT: fisubrs (%ecx) # sched: [13:2.00] 5009; SKX-NEXT: fisubrl (%eax) # sched: [13:2.00] 5010; SKX-NEXT: #NO_APP 5011; SKX-NEXT: retl # sched: [6:0.50] 5012; 5013; BTVER2-LABEL: test_fsubrp_fisubr: 5014; BTVER2: # %bb.0: 5015; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 5016; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:1.00] 5017; BTVER2-NEXT: #APP 5018; BTVER2-NEXT: fsubrp %st(1) # sched: [3:1.00] 5019; BTVER2-NEXT: fsubrp %st(2) # sched: [3:1.00] 5020; BTVER2-NEXT: fisubrs (%ecx) # sched: [8:1.00] 5021; BTVER2-NEXT: fisubrl (%eax) # sched: [8:1.00] 5022; BTVER2-NEXT: #NO_APP 5023; BTVER2-NEXT: retl # sched: [4:1.00] 5024; 5025; ZNVER1-LABEL: test_fsubrp_fisubr: 5026; ZNVER1: # %bb.0: 5027; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 5028; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50] 5029; ZNVER1-NEXT: #APP 5030; ZNVER1-NEXT: fsubrp %st(1) # sched: [3:1.00] 5031; ZNVER1-NEXT: fsubrp %st(2) # sched: [3:1.00] 5032; ZNVER1-NEXT: fisubrs (%ecx) # sched: [10:1.00] 5033; ZNVER1-NEXT: fisubrl (%eax) # sched: [10:1.00] 5034; ZNVER1-NEXT: #NO_APP 5035; ZNVER1-NEXT: retl # sched: [1:0.50] 5036 tail call void asm sideeffect "fsubrp \0A\09 fsubrp %st(2), %st(0) \0A\09 fisubrs $0 \0A\09 fisubrl $1", "*m,*m"(i16 *%a0, i32 *%a1) nounwind 5037 ret void 5038} 5039 5040define void @test_ftst() optsize { 5041; GENERIC-LABEL: test_ftst: 5042; GENERIC: # %bb.0: 5043; GENERIC-NEXT: #APP 5044; GENERIC-NEXT: ftst 5045; GENERIC-NEXT: #NO_APP 5046; GENERIC-NEXT: retl 5047; 5048; ATOM-LABEL: test_ftst: 5049; ATOM: # %bb.0: 5050; ATOM-NEXT: #APP 5051; ATOM-NEXT: ftst # sched: [9:4.50] 5052; ATOM-NEXT: #NO_APP 5053; ATOM-NEXT: retl # sched: [79:39.50] 5054; 5055; SLM-LABEL: test_ftst: 5056; SLM: # %bb.0: 5057; SLM-NEXT: #APP 5058; SLM-NEXT: ftst # sched: [3:1.00] 5059; SLM-NEXT: #NO_APP 5060; SLM-NEXT: retl # sched: [4:1.00] 5061; 5062; SANDY-LABEL: test_ftst: 5063; SANDY: # %bb.0: 5064; SANDY-NEXT: #APP 5065; SANDY-NEXT: ftst # sched: [3:1.00] 5066; SANDY-NEXT: #NO_APP 5067; SANDY-NEXT: retl # sched: [6:1.00] 5068; 5069; HASWELL-LABEL: test_ftst: 5070; HASWELL: # %bb.0: 5071; HASWELL-NEXT: #APP 5072; HASWELL-NEXT: ftst # sched: [1:1.00] 5073; HASWELL-NEXT: #NO_APP 5074; HASWELL-NEXT: retl # sched: [7:1.00] 5075; 5076; BROADWELL-LABEL: test_ftst: 5077; BROADWELL: # %bb.0: 5078; BROADWELL-NEXT: #APP 5079; BROADWELL-NEXT: ftst # sched: [3:1.00] 5080; BROADWELL-NEXT: #NO_APP 5081; BROADWELL-NEXT: retl # sched: [6:0.50] 5082; 5083; SKYLAKE-LABEL: test_ftst: 5084; SKYLAKE: # %bb.0: 5085; SKYLAKE-NEXT: #APP 5086; SKYLAKE-NEXT: ftst # sched: [2:1.00] 5087; SKYLAKE-NEXT: #NO_APP 5088; SKYLAKE-NEXT: retl # sched: [6:0.50] 5089; 5090; SKX-LABEL: test_ftst: 5091; SKX: # %bb.0: 5092; SKX-NEXT: #APP 5093; SKX-NEXT: ftst # sched: [2:1.00] 5094; SKX-NEXT: #NO_APP 5095; SKX-NEXT: retl # sched: [6:0.50] 5096; 5097; BTVER2-LABEL: test_ftst: 5098; BTVER2: # %bb.0: 5099; BTVER2-NEXT: #APP 5100; BTVER2-NEXT: ftst # sched: [3:1.00] 5101; BTVER2-NEXT: #NO_APP 5102; BTVER2-NEXT: retl # sched: [4:1.00] 5103; 5104; ZNVER1-LABEL: test_ftst: 5105; ZNVER1: # %bb.0: 5106; ZNVER1-NEXT: #APP 5107; ZNVER1-NEXT: ftst # sched: [1:1.00] 5108; ZNVER1-NEXT: #NO_APP 5109; ZNVER1-NEXT: retl # sched: [1:0.50] 5110 tail call void asm sideeffect "ftst", ""() nounwind 5111 ret void 5112} 5113 5114define void @test_fucom_fucomp_fucompp() optsize { 5115; GENERIC-LABEL: test_fucom_fucomp_fucompp: 5116; GENERIC: # %bb.0: 5117; GENERIC-NEXT: #APP 5118; GENERIC-NEXT: fucom %st(1) 5119; GENERIC-NEXT: fucom %st(3) 5120; GENERIC-NEXT: fucomp %st(1) 5121; GENERIC-NEXT: fucomp %st(3) 5122; GENERIC-NEXT: fucompp 5123; GENERIC-NEXT: #NO_APP 5124; GENERIC-NEXT: retl 5125; 5126; ATOM-LABEL: test_fucom_fucomp_fucompp: 5127; ATOM: # %bb.0: 5128; ATOM-NEXT: #APP 5129; ATOM-NEXT: fucom %st(1) # sched: [1:1.00] 5130; ATOM-NEXT: fucom %st(3) # sched: [1:1.00] 5131; ATOM-NEXT: fucomp %st(1) # sched: [1:1.00] 5132; ATOM-NEXT: fucomp %st(3) # sched: [1:1.00] 5133; ATOM-NEXT: fucompp # sched: [1:1.00] 5134; ATOM-NEXT: #NO_APP 5135; ATOM-NEXT: retl # sched: [79:39.50] 5136; 5137; SLM-LABEL: test_fucom_fucomp_fucompp: 5138; SLM: # %bb.0: 5139; SLM-NEXT: #APP 5140; SLM-NEXT: fucom %st(1) # sched: [3:1.00] 5141; SLM-NEXT: fucom %st(3) # sched: [3:1.00] 5142; SLM-NEXT: fucomp %st(1) # sched: [3:1.00] 5143; SLM-NEXT: fucomp %st(3) # sched: [3:1.00] 5144; SLM-NEXT: fucompp # sched: [3:1.00] 5145; SLM-NEXT: #NO_APP 5146; SLM-NEXT: retl # sched: [4:1.00] 5147; 5148; SANDY-LABEL: test_fucom_fucomp_fucompp: 5149; SANDY: # %bb.0: 5150; SANDY-NEXT: #APP 5151; SANDY-NEXT: fucom %st(1) # sched: [1:1.00] 5152; SANDY-NEXT: fucom %st(3) # sched: [1:1.00] 5153; SANDY-NEXT: fucomp %st(1) # sched: [1:1.00] 5154; SANDY-NEXT: fucomp %st(3) # sched: [1:1.00] 5155; SANDY-NEXT: fucompp # sched: [3:1.00] 5156; SANDY-NEXT: #NO_APP 5157; SANDY-NEXT: retl # sched: [6:1.00] 5158; 5159; HASWELL-LABEL: test_fucom_fucomp_fucompp: 5160; HASWELL: # %bb.0: 5161; HASWELL-NEXT: #APP 5162; HASWELL-NEXT: fucom %st(1) # sched: [1:1.00] 5163; HASWELL-NEXT: fucom %st(3) # sched: [1:1.00] 5164; HASWELL-NEXT: fucomp %st(1) # sched: [1:1.00] 5165; HASWELL-NEXT: fucomp %st(3) # sched: [1:1.00] 5166; HASWELL-NEXT: fucompp # sched: [1:0.50] 5167; HASWELL-NEXT: #NO_APP 5168; HASWELL-NEXT: retl # sched: [7:1.00] 5169; 5170; BROADWELL-LABEL: test_fucom_fucomp_fucompp: 5171; BROADWELL: # %bb.0: 5172; BROADWELL-NEXT: #APP 5173; BROADWELL-NEXT: fucom %st(1) # sched: [1:1.00] 5174; BROADWELL-NEXT: fucom %st(3) # sched: [1:1.00] 5175; BROADWELL-NEXT: fucomp %st(1) # sched: [1:1.00] 5176; BROADWELL-NEXT: fucomp %st(3) # sched: [1:1.00] 5177; BROADWELL-NEXT: fucompp # sched: [3:1.00] 5178; BROADWELL-NEXT: #NO_APP 5179; BROADWELL-NEXT: retl # sched: [6:0.50] 5180; 5181; SKYLAKE-LABEL: test_fucom_fucomp_fucompp: 5182; SKYLAKE: # %bb.0: 5183; SKYLAKE-NEXT: #APP 5184; SKYLAKE-NEXT: fucom %st(1) # sched: [1:1.00] 5185; SKYLAKE-NEXT: fucom %st(3) # sched: [1:1.00] 5186; SKYLAKE-NEXT: fucomp %st(1) # sched: [1:1.00] 5187; SKYLAKE-NEXT: fucomp %st(3) # sched: [1:1.00] 5188; SKYLAKE-NEXT: fucompp # sched: [2:1.00] 5189; SKYLAKE-NEXT: #NO_APP 5190; SKYLAKE-NEXT: retl # sched: [6:0.50] 5191; 5192; SKX-LABEL: test_fucom_fucomp_fucompp: 5193; SKX: # %bb.0: 5194; SKX-NEXT: #APP 5195; SKX-NEXT: fucom %st(1) # sched: [1:1.00] 5196; SKX-NEXT: fucom %st(3) # sched: [1:1.00] 5197; SKX-NEXT: fucomp %st(1) # sched: [1:1.00] 5198; SKX-NEXT: fucomp %st(3) # sched: [1:1.00] 5199; SKX-NEXT: fucompp # sched: [2:1.00] 5200; SKX-NEXT: #NO_APP 5201; SKX-NEXT: retl # sched: [6:0.50] 5202; 5203; BTVER2-LABEL: test_fucom_fucomp_fucompp: 5204; BTVER2: # %bb.0: 5205; BTVER2-NEXT: #APP 5206; BTVER2-NEXT: fucom %st(1) # sched: [3:1.00] 5207; BTVER2-NEXT: fucom %st(3) # sched: [3:1.00] 5208; BTVER2-NEXT: fucomp %st(1) # sched: [3:1.00] 5209; BTVER2-NEXT: fucomp %st(3) # sched: [3:1.00] 5210; BTVER2-NEXT: fucompp # sched: [3:1.00] 5211; BTVER2-NEXT: #NO_APP 5212; BTVER2-NEXT: retl # sched: [4:1.00] 5213; 5214; ZNVER1-LABEL: test_fucom_fucomp_fucompp: 5215; ZNVER1: # %bb.0: 5216; ZNVER1-NEXT: #APP 5217; ZNVER1-NEXT: fucom %st(1) # sched: [1:1.00] 5218; ZNVER1-NEXT: fucom %st(3) # sched: [1:1.00] 5219; ZNVER1-NEXT: fucomp %st(1) # sched: [1:1.00] 5220; ZNVER1-NEXT: fucomp %st(3) # sched: [1:1.00] 5221; ZNVER1-NEXT: fucompp # sched: [1:1.00] 5222; ZNVER1-NEXT: #NO_APP 5223; ZNVER1-NEXT: retl # sched: [1:0.50] 5224 tail call void asm sideeffect "fucom \0A\09 fucom %st(3) \0A\09 fucomp \0A\09 fucomp %st(3) \0A\09 fucompp", ""() nounwind 5225 ret void 5226} 5227 5228define void @test_fucomi_fucomip() optsize { 5229; GENERIC-LABEL: test_fucomi_fucomip: 5230; GENERIC: # %bb.0: 5231; GENERIC-NEXT: #APP 5232; GENERIC-NEXT: fucomi %st(3) 5233; GENERIC-NEXT: fucompi %st(3) 5234; GENERIC-NEXT: #NO_APP 5235; GENERIC-NEXT: retl 5236; 5237; ATOM-LABEL: test_fucomi_fucomip: 5238; ATOM: # %bb.0: 5239; ATOM-NEXT: #APP 5240; ATOM-NEXT: fucomi %st(3) # sched: [9:4.50] 5241; ATOM-NEXT: fucompi %st(3) # sched: [9:4.50] 5242; ATOM-NEXT: #NO_APP 5243; ATOM-NEXT: retl # sched: [79:39.50] 5244; 5245; SLM-LABEL: test_fucomi_fucomip: 5246; SLM: # %bb.0: 5247; SLM-NEXT: #APP 5248; SLM-NEXT: fucomi %st(3) # sched: [3:1.00] 5249; SLM-NEXT: fucompi %st(3) # sched: [3:1.00] 5250; SLM-NEXT: #NO_APP 5251; SLM-NEXT: retl # sched: [4:1.00] 5252; 5253; SANDY-LABEL: test_fucomi_fucomip: 5254; SANDY: # %bb.0: 5255; SANDY-NEXT: #APP 5256; SANDY-NEXT: fucomi %st(3) # sched: [3:1.00] 5257; SANDY-NEXT: fucompi %st(3) # sched: [3:1.00] 5258; SANDY-NEXT: #NO_APP 5259; SANDY-NEXT: retl # sched: [6:1.00] 5260; 5261; HASWELL-LABEL: test_fucomi_fucomip: 5262; HASWELL: # %bb.0: 5263; HASWELL-NEXT: #APP 5264; HASWELL-NEXT: fucomi %st(3) # sched: [1:0.50] 5265; HASWELL-NEXT: fucompi %st(3) # sched: [1:0.50] 5266; HASWELL-NEXT: #NO_APP 5267; HASWELL-NEXT: retl # sched: [7:1.00] 5268; 5269; BROADWELL-LABEL: test_fucomi_fucomip: 5270; BROADWELL: # %bb.0: 5271; BROADWELL-NEXT: #APP 5272; BROADWELL-NEXT: fucomi %st(3) # sched: [3:1.00] 5273; BROADWELL-NEXT: fucompi %st(3) # sched: [3:1.00] 5274; BROADWELL-NEXT: #NO_APP 5275; BROADWELL-NEXT: retl # sched: [6:0.50] 5276; 5277; SKYLAKE-LABEL: test_fucomi_fucomip: 5278; SKYLAKE: # %bb.0: 5279; SKYLAKE-NEXT: #APP 5280; SKYLAKE-NEXT: fucomi %st(3) # sched: [2:1.00] 5281; SKYLAKE-NEXT: fucompi %st(3) # sched: [2:1.00] 5282; SKYLAKE-NEXT: #NO_APP 5283; SKYLAKE-NEXT: retl # sched: [6:0.50] 5284; 5285; SKX-LABEL: test_fucomi_fucomip: 5286; SKX: # %bb.0: 5287; SKX-NEXT: #APP 5288; SKX-NEXT: fucomi %st(3) # sched: [2:1.00] 5289; SKX-NEXT: fucompi %st(3) # sched: [2:1.00] 5290; SKX-NEXT: #NO_APP 5291; SKX-NEXT: retl # sched: [6:0.50] 5292; 5293; BTVER2-LABEL: test_fucomi_fucomip: 5294; BTVER2: # %bb.0: 5295; BTVER2-NEXT: #APP 5296; BTVER2-NEXT: fucomi %st(3) # sched: [3:1.00] 5297; BTVER2-NEXT: fucompi %st(3) # sched: [3:1.00] 5298; BTVER2-NEXT: #NO_APP 5299; BTVER2-NEXT: retl # sched: [4:1.00] 5300; 5301; ZNVER1-LABEL: test_fucomi_fucomip: 5302; ZNVER1: # %bb.0: 5303; ZNVER1-NEXT: #APP 5304; ZNVER1-NEXT: fucomi %st(3) # sched: [9:0.50] 5305; ZNVER1-NEXT: fucompi %st(3) # sched: [9:0.50] 5306; ZNVER1-NEXT: #NO_APP 5307; ZNVER1-NEXT: retl # sched: [1:0.50] 5308 tail call void asm sideeffect "fucomi %st(3) \0A\09 fucomip %st(3)", ""() nounwind 5309 ret void 5310} 5311 5312define void @test_fwait() optsize { 5313; GENERIC-LABEL: test_fwait: 5314; GENERIC: # %bb.0: 5315; GENERIC-NEXT: #APP 5316; GENERIC-NEXT: wait 5317; GENERIC-NEXT: #NO_APP 5318; GENERIC-NEXT: retl 5319; 5320; ATOM-LABEL: test_fwait: 5321; ATOM: # %bb.0: 5322; ATOM-NEXT: #APP 5323; ATOM-NEXT: wait # sched: [1:0.50] 5324; ATOM-NEXT: #NO_APP 5325; ATOM-NEXT: retl # sched: [79:39.50] 5326; 5327; SLM-LABEL: test_fwait: 5328; SLM: # %bb.0: 5329; SLM-NEXT: #APP 5330; SLM-NEXT: wait # sched: [100:1.00] 5331; SLM-NEXT: #NO_APP 5332; SLM-NEXT: retl # sched: [4:1.00] 5333; 5334; SANDY-LABEL: test_fwait: 5335; SANDY: # %bb.0: 5336; SANDY-NEXT: #APP 5337; SANDY-NEXT: wait # sched: [100:0.33] 5338; SANDY-NEXT: #NO_APP 5339; SANDY-NEXT: retl # sched: [6:1.00] 5340; 5341; HASWELL-LABEL: test_fwait: 5342; HASWELL: # %bb.0: 5343; HASWELL-NEXT: #APP 5344; HASWELL-NEXT: wait # sched: [2:0.50] 5345; HASWELL-NEXT: #NO_APP 5346; HASWELL-NEXT: retl # sched: [7:1.00] 5347; 5348; BROADWELL-LABEL: test_fwait: 5349; BROADWELL: # %bb.0: 5350; BROADWELL-NEXT: #APP 5351; BROADWELL-NEXT: wait # sched: [2:0.50] 5352; BROADWELL-NEXT: #NO_APP 5353; BROADWELL-NEXT: retl # sched: [6:0.50] 5354; 5355; SKYLAKE-LABEL: test_fwait: 5356; SKYLAKE: # %bb.0: 5357; SKYLAKE-NEXT: #APP 5358; SKYLAKE-NEXT: wait # sched: [2:0.50] 5359; SKYLAKE-NEXT: #NO_APP 5360; SKYLAKE-NEXT: retl # sched: [6:0.50] 5361; 5362; SKX-LABEL: test_fwait: 5363; SKX: # %bb.0: 5364; SKX-NEXT: #APP 5365; SKX-NEXT: wait # sched: [2:0.50] 5366; SKX-NEXT: #NO_APP 5367; SKX-NEXT: retl # sched: [6:0.50] 5368; 5369; BTVER2-LABEL: test_fwait: 5370; BTVER2: # %bb.0: 5371; BTVER2-NEXT: #APP 5372; BTVER2-NEXT: wait # sched: [100:0.50] 5373; BTVER2-NEXT: #NO_APP 5374; BTVER2-NEXT: retl # sched: [4:1.00] 5375; 5376; ZNVER1-LABEL: test_fwait: 5377; ZNVER1: # %bb.0: 5378; ZNVER1-NEXT: #APP 5379; ZNVER1-NEXT: wait # sched: [1:1.00] 5380; ZNVER1-NEXT: #NO_APP 5381; ZNVER1-NEXT: retl # sched: [1:0.50] 5382 tail call void asm sideeffect "fwait", ""() nounwind 5383 ret void 5384} 5385 5386define void @test_fxam() optsize { 5387; GENERIC-LABEL: test_fxam: 5388; GENERIC: # %bb.0: 5389; GENERIC-NEXT: #APP 5390; GENERIC-NEXT: fxam 5391; GENERIC-NEXT: #NO_APP 5392; GENERIC-NEXT: retl 5393; 5394; ATOM-LABEL: test_fxam: 5395; ATOM: # %bb.0: 5396; ATOM-NEXT: #APP 5397; ATOM-NEXT: fxam # sched: [1:1.00] 5398; ATOM-NEXT: #NO_APP 5399; ATOM-NEXT: retl # sched: [79:39.50] 5400; 5401; SLM-LABEL: test_fxam: 5402; SLM: # %bb.0: 5403; SLM-NEXT: #APP 5404; SLM-NEXT: fxam # sched: [100:1.00] 5405; SLM-NEXT: #NO_APP 5406; SLM-NEXT: retl # sched: [4:1.00] 5407; 5408; SANDY-LABEL: test_fxam: 5409; SANDY: # %bb.0: 5410; SANDY-NEXT: #APP 5411; SANDY-NEXT: fxam # sched: [100:0.33] 5412; SANDY-NEXT: #NO_APP 5413; SANDY-NEXT: retl # sched: [6:1.00] 5414; 5415; HASWELL-LABEL: test_fxam: 5416; HASWELL: # %bb.0: 5417; HASWELL-NEXT: #APP 5418; HASWELL-NEXT: fxam # sched: [1:2.00] 5419; HASWELL-NEXT: #NO_APP 5420; HASWELL-NEXT: retl # sched: [7:1.00] 5421; 5422; BROADWELL-LABEL: test_fxam: 5423; BROADWELL: # %bb.0: 5424; BROADWELL-NEXT: #APP 5425; BROADWELL-NEXT: fxam # sched: [100:0.25] 5426; BROADWELL-NEXT: #NO_APP 5427; BROADWELL-NEXT: retl # sched: [6:0.50] 5428; 5429; SKYLAKE-LABEL: test_fxam: 5430; SKYLAKE: # %bb.0: 5431; SKYLAKE-NEXT: #APP 5432; SKYLAKE-NEXT: fxam # sched: [100:0.25] 5433; SKYLAKE-NEXT: #NO_APP 5434; SKYLAKE-NEXT: retl # sched: [6:0.50] 5435; 5436; SKX-LABEL: test_fxam: 5437; SKX: # %bb.0: 5438; SKX-NEXT: #APP 5439; SKX-NEXT: fxam # sched: [100:0.25] 5440; SKX-NEXT: #NO_APP 5441; SKX-NEXT: retl # sched: [6:0.50] 5442; 5443; BTVER2-LABEL: test_fxam: 5444; BTVER2: # %bb.0: 5445; BTVER2-NEXT: #APP 5446; BTVER2-NEXT: fxam # sched: [100:0.50] 5447; BTVER2-NEXT: #NO_APP 5448; BTVER2-NEXT: retl # sched: [4:1.00] 5449; 5450; ZNVER1-LABEL: test_fxam: 5451; ZNVER1: # %bb.0: 5452; ZNVER1-NEXT: #APP 5453; ZNVER1-NEXT: fxam # sched: [1:1.00] 5454; ZNVER1-NEXT: #NO_APP 5455; ZNVER1-NEXT: retl # sched: [1:0.50] 5456 tail call void asm sideeffect "fxam", ""() nounwind 5457 ret void 5458} 5459 5460define void @test_fxch() optsize { 5461; GENERIC-LABEL: test_fxch: 5462; GENERIC: # %bb.0: 5463; GENERIC-NEXT: #APP 5464; GENERIC-NEXT: fxch %st(1) 5465; GENERIC-NEXT: fxch %st(3) 5466; GENERIC-NEXT: #NO_APP 5467; GENERIC-NEXT: retl 5468; 5469; ATOM-LABEL: test_fxch: 5470; ATOM: # %bb.0: 5471; ATOM-NEXT: #APP 5472; ATOM-NEXT: fxch %st(1) # sched: [1:1.00] 5473; ATOM-NEXT: fxch %st(3) # sched: [1:1.00] 5474; ATOM-NEXT: #NO_APP 5475; ATOM-NEXT: retl # sched: [79:39.50] 5476; 5477; SLM-LABEL: test_fxch: 5478; SLM: # %bb.0: 5479; SLM-NEXT: #APP 5480; SLM-NEXT: fxch %st(1) # sched: [1:0.50] 5481; SLM-NEXT: fxch %st(3) # sched: [1:0.50] 5482; SLM-NEXT: #NO_APP 5483; SLM-NEXT: retl # sched: [4:1.00] 5484; 5485; SANDY-LABEL: test_fxch: 5486; SANDY: # %bb.0: 5487; SANDY-NEXT: #APP 5488; SANDY-NEXT: fxch %st(1) # sched: [1:0.33] 5489; SANDY-NEXT: fxch %st(3) # sched: [1:0.33] 5490; SANDY-NEXT: #NO_APP 5491; SANDY-NEXT: retl # sched: [6:1.00] 5492; 5493; HASWELL-LABEL: test_fxch: 5494; HASWELL: # %bb.0: 5495; HASWELL-NEXT: #APP 5496; HASWELL-NEXT: fxch %st(1) # sched: [17:4.00] 5497; HASWELL-NEXT: fxch %st(3) # sched: [17:4.00] 5498; HASWELL-NEXT: #NO_APP 5499; HASWELL-NEXT: retl # sched: [7:1.00] 5500; 5501; BROADWELL-LABEL: test_fxch: 5502; BROADWELL: # %bb.0: 5503; BROADWELL-NEXT: #APP 5504; BROADWELL-NEXT: fxch %st(1) # sched: [14:4.00] 5505; BROADWELL-NEXT: fxch %st(3) # sched: [14:4.00] 5506; BROADWELL-NEXT: #NO_APP 5507; BROADWELL-NEXT: retl # sched: [6:0.50] 5508; 5509; SKYLAKE-LABEL: test_fxch: 5510; SKYLAKE: # %bb.0: 5511; SKYLAKE-NEXT: #APP 5512; SKYLAKE-NEXT: fxch %st(1) # sched: [17:4.00] 5513; SKYLAKE-NEXT: fxch %st(3) # sched: [17:4.00] 5514; SKYLAKE-NEXT: #NO_APP 5515; SKYLAKE-NEXT: retl # sched: [6:0.50] 5516; 5517; SKX-LABEL: test_fxch: 5518; SKX: # %bb.0: 5519; SKX-NEXT: #APP 5520; SKX-NEXT: fxch %st(1) # sched: [17:4.00] 5521; SKX-NEXT: fxch %st(3) # sched: [17:4.00] 5522; SKX-NEXT: #NO_APP 5523; SKX-NEXT: retl # sched: [6:0.50] 5524; 5525; BTVER2-LABEL: test_fxch: 5526; BTVER2: # %bb.0: 5527; BTVER2-NEXT: #APP 5528; BTVER2-NEXT: fxch %st(1) # sched: [1:0.50] 5529; BTVER2-NEXT: fxch %st(3) # sched: [1:0.50] 5530; BTVER2-NEXT: #NO_APP 5531; BTVER2-NEXT: retl # sched: [4:1.00] 5532; 5533; ZNVER1-LABEL: test_fxch: 5534; ZNVER1: # %bb.0: 5535; ZNVER1-NEXT: #APP 5536; ZNVER1-NEXT: fxch %st(1) # sched: [1:0.25] 5537; ZNVER1-NEXT: fxch %st(3) # sched: [1:0.25] 5538; ZNVER1-NEXT: #NO_APP 5539; ZNVER1-NEXT: retl # sched: [1:0.50] 5540 tail call void asm sideeffect "fxch \0A\09 fxch %st(3)", ""() nounwind 5541 ret void 5542} 5543 5544define void @test_fxrstor_fxsave(i8* %a0) optsize { 5545; GENERIC-LABEL: test_fxrstor_fxsave: 5546; GENERIC: # %bb.0: 5547; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5548; GENERIC-NEXT: #APP 5549; GENERIC-NEXT: fxrstor (%eax) 5550; GENERIC-NEXT: fxsave (%eax) 5551; GENERIC-NEXT: #NO_APP 5552; GENERIC-NEXT: retl 5553; 5554; ATOM-LABEL: test_fxrstor_fxsave: 5555; ATOM: # %bb.0: 5556; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] 5557; ATOM-NEXT: #APP 5558; ATOM-NEXT: fxrstor (%eax) # sched: [141:70.50] 5559; ATOM-NEXT: fxsave (%eax) # sched: [140:70.00] 5560; ATOM-NEXT: #NO_APP 5561; ATOM-NEXT: retl # sched: [79:39.50] 5562; 5563; SLM-LABEL: test_fxrstor_fxsave: 5564; SLM: # %bb.0: 5565; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00] 5566; SLM-NEXT: #APP 5567; SLM-NEXT: fxrstor (%eax) # sched: [100:1.00] 5568; SLM-NEXT: fxsave (%eax) # sched: [100:1.00] 5569; SLM-NEXT: #NO_APP 5570; SLM-NEXT: retl # sched: [4:1.00] 5571; 5572; SANDY-LABEL: test_fxrstor_fxsave: 5573; SANDY: # %bb.0: 5574; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5575; SANDY-NEXT: #APP 5576; SANDY-NEXT: fxrstor (%eax) # sched: [5:2.00] 5577; SANDY-NEXT: fxsave (%eax) # sched: [100:0.33] 5578; SANDY-NEXT: #NO_APP 5579; SANDY-NEXT: retl # sched: [6:1.00] 5580; 5581; HASWELL-LABEL: test_fxrstor_fxsave: 5582; HASWELL: # %bb.0: 5583; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5584; HASWELL-NEXT: #APP 5585; HASWELL-NEXT: fxrstor (%eax) # sched: [64:16.50] 5586; HASWELL-NEXT: fxsave (%eax) # sched: [100:0.25] 5587; HASWELL-NEXT: #NO_APP 5588; HASWELL-NEXT: retl # sched: [7:1.00] 5589; 5590; BROADWELL-LABEL: test_fxrstor_fxsave: 5591; BROADWELL: # %bb.0: 5592; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5593; BROADWELL-NEXT: #APP 5594; BROADWELL-NEXT: fxrstor (%eax) # sched: [63:16.50] 5595; BROADWELL-NEXT: fxsave (%eax) # sched: [100:0.25] 5596; BROADWELL-NEXT: #NO_APP 5597; BROADWELL-NEXT: retl # sched: [6:0.50] 5598; 5599; SKYLAKE-LABEL: test_fxrstor_fxsave: 5600; SKYLAKE: # %bb.0: 5601; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5602; SKYLAKE-NEXT: #APP 5603; SKYLAKE-NEXT: fxrstor (%eax) # sched: [63:16.50] 5604; SKYLAKE-NEXT: fxsave (%eax) # sched: [100:0.25] 5605; SKYLAKE-NEXT: #NO_APP 5606; SKYLAKE-NEXT: retl # sched: [6:0.50] 5607; 5608; SKX-LABEL: test_fxrstor_fxsave: 5609; SKX: # %bb.0: 5610; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50] 5611; SKX-NEXT: #APP 5612; SKX-NEXT: fxrstor (%eax) # sched: [63:16.50] 5613; SKX-NEXT: fxsave (%eax) # sched: [100:0.25] 5614; SKX-NEXT: #NO_APP 5615; SKX-NEXT: retl # sched: [6:0.50] 5616; 5617; BTVER2-LABEL: test_fxrstor_fxsave: 5618; BTVER2: # %bb.0: 5619; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:1.00] 5620; BTVER2-NEXT: #APP 5621; BTVER2-NEXT: fxrstor (%eax) # sched: [100:0.50] 5622; BTVER2-NEXT: fxsave (%eax) # sched: [100:0.50] 5623; BTVER2-NEXT: #NO_APP 5624; BTVER2-NEXT: retl # sched: [4:1.00] 5625; 5626; ZNVER1-LABEL: test_fxrstor_fxsave: 5627; ZNVER1: # %bb.0: 5628; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50] 5629; ZNVER1-NEXT: #APP 5630; ZNVER1-NEXT: fxrstor (%eax) # sched: [100:0.25] 5631; ZNVER1-NEXT: fxsave (%eax) # sched: [100:0.25] 5632; ZNVER1-NEXT: #NO_APP 5633; ZNVER1-NEXT: retl # sched: [1:0.50] 5634 tail call void asm sideeffect "fxrstor $0 \0A\09 fxsave $0", "*m"(i8 *%a0) nounwind 5635 ret void 5636} 5637 5638define void @test_fxtract() optsize { 5639; GENERIC-LABEL: test_fxtract: 5640; GENERIC: # %bb.0: 5641; GENERIC-NEXT: #APP 5642; GENERIC-NEXT: fxtract 5643; GENERIC-NEXT: #NO_APP 5644; GENERIC-NEXT: retl 5645; 5646; ATOM-LABEL: test_fxtract: 5647; ATOM: # %bb.0: 5648; ATOM-NEXT: #APP 5649; ATOM-NEXT: fxtract # sched: [25:12.50] 5650; ATOM-NEXT: #NO_APP 5651; ATOM-NEXT: retl # sched: [79:39.50] 5652; 5653; SLM-LABEL: test_fxtract: 5654; SLM: # %bb.0: 5655; SLM-NEXT: #APP 5656; SLM-NEXT: fxtract # sched: [100:1.00] 5657; SLM-NEXT: #NO_APP 5658; SLM-NEXT: retl # sched: [4:1.00] 5659; 5660; SANDY-LABEL: test_fxtract: 5661; SANDY: # %bb.0: 5662; SANDY-NEXT: #APP 5663; SANDY-NEXT: fxtract # sched: [100:0.33] 5664; SANDY-NEXT: #NO_APP 5665; SANDY-NEXT: retl # sched: [6:1.00] 5666; 5667; HASWELL-LABEL: test_fxtract: 5668; HASWELL: # %bb.0: 5669; HASWELL-NEXT: #APP 5670; HASWELL-NEXT: fxtract # sched: [15:4.25] 5671; HASWELL-NEXT: #NO_APP 5672; HASWELL-NEXT: retl # sched: [7:1.00] 5673; 5674; BROADWELL-LABEL: test_fxtract: 5675; BROADWELL: # %bb.0: 5676; BROADWELL-NEXT: #APP 5677; BROADWELL-NEXT: fxtract # sched: [100:0.25] 5678; BROADWELL-NEXT: #NO_APP 5679; BROADWELL-NEXT: retl # sched: [6:0.50] 5680; 5681; SKYLAKE-LABEL: test_fxtract: 5682; SKYLAKE: # %bb.0: 5683; SKYLAKE-NEXT: #APP 5684; SKYLAKE-NEXT: fxtract # sched: [100:0.25] 5685; SKYLAKE-NEXT: #NO_APP 5686; SKYLAKE-NEXT: retl # sched: [6:0.50] 5687; 5688; SKX-LABEL: test_fxtract: 5689; SKX: # %bb.0: 5690; SKX-NEXT: #APP 5691; SKX-NEXT: fxtract # sched: [100:0.25] 5692; SKX-NEXT: #NO_APP 5693; SKX-NEXT: retl # sched: [6:0.50] 5694; 5695; BTVER2-LABEL: test_fxtract: 5696; BTVER2: # %bb.0: 5697; BTVER2-NEXT: #APP 5698; BTVER2-NEXT: fxtract # sched: [100:0.50] 5699; BTVER2-NEXT: #NO_APP 5700; BTVER2-NEXT: retl # sched: [4:1.00] 5701; 5702; ZNVER1-LABEL: test_fxtract: 5703; ZNVER1: # %bb.0: 5704; ZNVER1-NEXT: #APP 5705; ZNVER1-NEXT: fxtract # sched: [100:0.25] 5706; ZNVER1-NEXT: #NO_APP 5707; ZNVER1-NEXT: retl # sched: [1:0.50] 5708 tail call void asm sideeffect "fxtract", ""() nounwind 5709 ret void 5710} 5711 5712define void @test_fyl2x() optsize { 5713; GENERIC-LABEL: test_fyl2x: 5714; GENERIC: # %bb.0: 5715; GENERIC-NEXT: #APP 5716; GENERIC-NEXT: fyl2x 5717; GENERIC-NEXT: #NO_APP 5718; GENERIC-NEXT: retl 5719; 5720; ATOM-LABEL: test_fyl2x: 5721; ATOM: # %bb.0: 5722; ATOM-NEXT: #APP 5723; ATOM-NEXT: fyl2x # sched: [146:73.00] 5724; ATOM-NEXT: #NO_APP 5725; ATOM-NEXT: retl # sched: [79:39.50] 5726; 5727; SLM-LABEL: test_fyl2x: 5728; SLM: # %bb.0: 5729; SLM-NEXT: #APP 5730; SLM-NEXT: fyl2x # sched: [100:1.00] 5731; SLM-NEXT: #NO_APP 5732; SLM-NEXT: retl # sched: [4:1.00] 5733; 5734; SANDY-LABEL: test_fyl2x: 5735; SANDY: # %bb.0: 5736; SANDY-NEXT: #APP 5737; SANDY-NEXT: fyl2x # sched: [100:0.33] 5738; SANDY-NEXT: #NO_APP 5739; SANDY-NEXT: retl # sched: [6:1.00] 5740; 5741; HASWELL-LABEL: test_fyl2x: 5742; HASWELL: # %bb.0: 5743; HASWELL-NEXT: #APP 5744; HASWELL-NEXT: fyl2x # sched: [100:0.25] 5745; HASWELL-NEXT: #NO_APP 5746; HASWELL-NEXT: retl # sched: [7:1.00] 5747; 5748; BROADWELL-LABEL: test_fyl2x: 5749; BROADWELL: # %bb.0: 5750; BROADWELL-NEXT: #APP 5751; BROADWELL-NEXT: fyl2x # sched: [100:0.25] 5752; BROADWELL-NEXT: #NO_APP 5753; BROADWELL-NEXT: retl # sched: [6:0.50] 5754; 5755; SKYLAKE-LABEL: test_fyl2x: 5756; SKYLAKE: # %bb.0: 5757; SKYLAKE-NEXT: #APP 5758; SKYLAKE-NEXT: fyl2x # sched: [100:0.25] 5759; SKYLAKE-NEXT: #NO_APP 5760; SKYLAKE-NEXT: retl # sched: [6:0.50] 5761; 5762; SKX-LABEL: test_fyl2x: 5763; SKX: # %bb.0: 5764; SKX-NEXT: #APP 5765; SKX-NEXT: fyl2x # sched: [100:0.25] 5766; SKX-NEXT: #NO_APP 5767; SKX-NEXT: retl # sched: [6:0.50] 5768; 5769; BTVER2-LABEL: test_fyl2x: 5770; BTVER2: # %bb.0: 5771; BTVER2-NEXT: #APP 5772; BTVER2-NEXT: fyl2x # sched: [100:0.50] 5773; BTVER2-NEXT: #NO_APP 5774; BTVER2-NEXT: retl # sched: [4:1.00] 5775; 5776; ZNVER1-LABEL: test_fyl2x: 5777; ZNVER1: # %bb.0: 5778; ZNVER1-NEXT: #APP 5779; ZNVER1-NEXT: fyl2x # sched: [100:0.25] 5780; ZNVER1-NEXT: #NO_APP 5781; ZNVER1-NEXT: retl # sched: [1:0.50] 5782 tail call void asm sideeffect "fyl2x", ""() nounwind 5783 ret void 5784} 5785 5786define void @test_fyl2xp1() optsize { 5787; GENERIC-LABEL: test_fyl2xp1: 5788; GENERIC: # %bb.0: 5789; GENERIC-NEXT: #APP 5790; GENERIC-NEXT: fyl2xp1 5791; GENERIC-NEXT: #NO_APP 5792; GENERIC-NEXT: retl 5793; 5794; ATOM-LABEL: test_fyl2xp1: 5795; ATOM: # %bb.0: 5796; ATOM-NEXT: #APP 5797; ATOM-NEXT: fyl2xp1 # sched: [147:73.50] 5798; ATOM-NEXT: #NO_APP 5799; ATOM-NEXT: retl # sched: [79:39.50] 5800; 5801; SLM-LABEL: test_fyl2xp1: 5802; SLM: # %bb.0: 5803; SLM-NEXT: #APP 5804; SLM-NEXT: fyl2xp1 # sched: [100:1.00] 5805; SLM-NEXT: #NO_APP 5806; SLM-NEXT: retl # sched: [4:1.00] 5807; 5808; SANDY-LABEL: test_fyl2xp1: 5809; SANDY: # %bb.0: 5810; SANDY-NEXT: #APP 5811; SANDY-NEXT: fyl2xp1 # sched: [100:0.33] 5812; SANDY-NEXT: #NO_APP 5813; SANDY-NEXT: retl # sched: [6:1.00] 5814; 5815; HASWELL-LABEL: test_fyl2xp1: 5816; HASWELL: # %bb.0: 5817; HASWELL-NEXT: #APP 5818; HASWELL-NEXT: fyl2xp1 # sched: [100:0.25] 5819; HASWELL-NEXT: #NO_APP 5820; HASWELL-NEXT: retl # sched: [7:1.00] 5821; 5822; BROADWELL-LABEL: test_fyl2xp1: 5823; BROADWELL: # %bb.0: 5824; BROADWELL-NEXT: #APP 5825; BROADWELL-NEXT: fyl2xp1 # sched: [100:0.25] 5826; BROADWELL-NEXT: #NO_APP 5827; BROADWELL-NEXT: retl # sched: [6:0.50] 5828; 5829; SKYLAKE-LABEL: test_fyl2xp1: 5830; SKYLAKE: # %bb.0: 5831; SKYLAKE-NEXT: #APP 5832; SKYLAKE-NEXT: fyl2xp1 # sched: [100:0.25] 5833; SKYLAKE-NEXT: #NO_APP 5834; SKYLAKE-NEXT: retl # sched: [6:0.50] 5835; 5836; SKX-LABEL: test_fyl2xp1: 5837; SKX: # %bb.0: 5838; SKX-NEXT: #APP 5839; SKX-NEXT: fyl2xp1 # sched: [100:0.25] 5840; SKX-NEXT: #NO_APP 5841; SKX-NEXT: retl # sched: [6:0.50] 5842; 5843; BTVER2-LABEL: test_fyl2xp1: 5844; BTVER2: # %bb.0: 5845; BTVER2-NEXT: #APP 5846; BTVER2-NEXT: fyl2xp1 # sched: [100:0.50] 5847; BTVER2-NEXT: #NO_APP 5848; BTVER2-NEXT: retl # sched: [4:1.00] 5849; 5850; ZNVER1-LABEL: test_fyl2xp1: 5851; ZNVER1: # %bb.0: 5852; ZNVER1-NEXT: #APP 5853; ZNVER1-NEXT: fyl2xp1 # sched: [100:0.25] 5854; ZNVER1-NEXT: #NO_APP 5855; ZNVER1-NEXT: retl # sched: [1:0.50] 5856 tail call void asm sideeffect "fyl2xp1", ""() nounwind 5857 ret void 5858} 5859