1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC 3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM 4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM 5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY 6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY 7; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL 8; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL 9; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE 10; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX 11; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2 12; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1 13 14define void @test_adc_8(i8 %a0, i8* %a1, i8 %a2) optsize { 15; GENERIC-LABEL: test_adc_8: 16; GENERIC: # %bb.0: 17; GENERIC-NEXT: #APP 18; GENERIC-NEXT: adcb $7, %al # sched: [2:0.67] 19; GENERIC-NEXT: adcb $7, %dil # sched: [2:0.67] 20; GENERIC-NEXT: adcb $7, (%rsi) # sched: [9:1.00] 21; GENERIC-NEXT: adcb %dl, %dil # sched: [2:0.67] 22; GENERIC-NEXT: adcb %dil, (%rsi) # sched: [9:1.00] 23; GENERIC-NEXT: adcb (%rsi), %dil # sched: [7:0.67] 24; GENERIC-NEXT: #NO_APP 25; GENERIC-NEXT: retq # sched: [1:1.00] 26; 27; ATOM-LABEL: test_adc_8: 28; ATOM: # %bb.0: 29; ATOM-NEXT: #APP 30; ATOM-NEXT: adcb $7, %al # sched: [1:0.50] 31; ATOM-NEXT: adcb $7, %dil # sched: [1:0.50] 32; ATOM-NEXT: adcb $7, (%rsi) # sched: [1:1.00] 33; ATOM-NEXT: adcb %dl, %dil # sched: [1:0.50] 34; ATOM-NEXT: adcb %dil, (%rsi) # sched: [1:1.00] 35; ATOM-NEXT: adcb (%rsi), %dil # sched: [1:1.00] 36; ATOM-NEXT: #NO_APP 37; ATOM-NEXT: retq # sched: [79:39.50] 38; 39; SLM-LABEL: test_adc_8: 40; SLM: # %bb.0: 41; SLM-NEXT: #APP 42; SLM-NEXT: adcb $7, %al # sched: [1:0.50] 43; SLM-NEXT: adcb $7, %dil # sched: [1:0.50] 44; SLM-NEXT: adcb $7, (%rsi) # sched: [5:2.00] 45; SLM-NEXT: adcb %dl, %dil # sched: [1:0.50] 46; SLM-NEXT: adcb %dil, (%rsi) # sched: [5:2.00] 47; SLM-NEXT: adcb (%rsi), %dil # sched: [4:1.00] 48; SLM-NEXT: #NO_APP 49; SLM-NEXT: retq # sched: [4:1.00] 50; 51; SANDY-LABEL: test_adc_8: 52; SANDY: # %bb.0: 53; SANDY-NEXT: #APP 54; SANDY-NEXT: adcb $7, %al # sched: [2:0.67] 55; SANDY-NEXT: adcb $7, %dil # sched: [2:0.67] 56; SANDY-NEXT: adcb $7, (%rsi) # sched: [9:1.00] 57; SANDY-NEXT: adcb %dl, %dil # sched: [2:0.67] 58; SANDY-NEXT: adcb %dil, (%rsi) # sched: [9:1.00] 59; SANDY-NEXT: adcb (%rsi), %dil # sched: [7:0.67] 60; SANDY-NEXT: #NO_APP 61; SANDY-NEXT: retq # sched: [1:1.00] 62; 63; HASWELL-LABEL: test_adc_8: 64; HASWELL: # %bb.0: 65; HASWELL-NEXT: #APP 66; HASWELL-NEXT: adcb $7, %al # sched: [2:0.50] 67; HASWELL-NEXT: adcb $7, %dil # sched: [2:0.50] 68; HASWELL-NEXT: adcb $7, (%rsi) # sched: [9:1.00] 69; HASWELL-NEXT: adcb %dl, %dil # sched: [2:0.50] 70; HASWELL-NEXT: adcb %dil, (%rsi) # sched: [9:1.00] 71; HASWELL-NEXT: adcb (%rsi), %dil # sched: [7:0.50] 72; HASWELL-NEXT: #NO_APP 73; HASWELL-NEXT: retq # sched: [7:1.00] 74; 75; BROADWELL-LABEL: test_adc_8: 76; BROADWELL: # %bb.0: 77; BROADWELL-NEXT: #APP 78; BROADWELL-NEXT: adcb $7, %al # sched: [2:0.50] 79; BROADWELL-NEXT: adcb $7, %dil # sched: [2:0.50] 80; BROADWELL-NEXT: adcb $7, (%rsi) # sched: [8:1.00] 81; BROADWELL-NEXT: adcb %dl, %dil # sched: [1:0.50] 82; BROADWELL-NEXT: adcb %dil, (%rsi) # sched: [8:1.00] 83; BROADWELL-NEXT: adcb (%rsi), %dil # sched: [6:0.50] 84; BROADWELL-NEXT: #NO_APP 85; BROADWELL-NEXT: retq # sched: [7:1.00] 86; 87; SKYLAKE-LABEL: test_adc_8: 88; SKYLAKE: # %bb.0: 89; SKYLAKE-NEXT: #APP 90; SKYLAKE-NEXT: adcb $7, %al # sched: [2:0.50] 91; SKYLAKE-NEXT: adcb $7, %dil # sched: [2:0.50] 92; SKYLAKE-NEXT: adcb $7, (%rsi) # sched: [8:1.00] 93; SKYLAKE-NEXT: adcb %dl, %dil # sched: [1:0.50] 94; SKYLAKE-NEXT: adcb %dil, (%rsi) # sched: [8:1.00] 95; SKYLAKE-NEXT: adcb (%rsi), %dil # sched: [6:0.50] 96; SKYLAKE-NEXT: #NO_APP 97; SKYLAKE-NEXT: retq # sched: [7:1.00] 98; 99; SKX-LABEL: test_adc_8: 100; SKX: # %bb.0: 101; SKX-NEXT: #APP 102; SKX-NEXT: adcb $7, %al # sched: [2:0.50] 103; SKX-NEXT: adcb $7, %dil # sched: [2:0.50] 104; SKX-NEXT: adcb $7, (%rsi) # sched: [8:1.00] 105; SKX-NEXT: adcb %dl, %dil # sched: [1:0.50] 106; SKX-NEXT: adcb %dil, (%rsi) # sched: [8:1.00] 107; SKX-NEXT: adcb (%rsi), %dil # sched: [6:0.50] 108; SKX-NEXT: #NO_APP 109; SKX-NEXT: retq # sched: [7:1.00] 110; 111; BTVER2-LABEL: test_adc_8: 112; BTVER2: # %bb.0: 113; BTVER2-NEXT: #APP 114; BTVER2-NEXT: adcb $7, %al # sched: [1:1.00] 115; BTVER2-NEXT: adcb $7, %dil # sched: [1:1.00] 116; BTVER2-NEXT: adcb $7, (%rsi) # sched: [5:1.00] 117; BTVER2-NEXT: adcb %dl, %dil # sched: [1:1.00] 118; BTVER2-NEXT: adcb %dil, (%rsi) # sched: [5:1.00] 119; BTVER2-NEXT: adcb (%rsi), %dil # sched: [4:1.00] 120; BTVER2-NEXT: #NO_APP 121; BTVER2-NEXT: retq # sched: [4:1.00] 122; 123; ZNVER1-LABEL: test_adc_8: 124; ZNVER1: # %bb.0: 125; ZNVER1-NEXT: #APP 126; ZNVER1-NEXT: adcb $7, %al # sched: [1:0.25] 127; ZNVER1-NEXT: adcb $7, %dil # sched: [1:0.25] 128; ZNVER1-NEXT: adcb $7, (%rsi) # sched: [5:0.50] 129; ZNVER1-NEXT: adcb %dl, %dil # sched: [1:0.25] 130; ZNVER1-NEXT: adcb %dil, (%rsi) # sched: [5:0.50] 131; ZNVER1-NEXT: adcb (%rsi), %dil # sched: [5:0.50] 132; ZNVER1-NEXT: #NO_APP 133; ZNVER1-NEXT: retq # sched: [1:0.50] 134 tail call void asm "adcb $3, %AL \0A\09 adcb $3, $0 \0A\09 adcb $3, $2 \0A\09 adcb $1, $0 \0A\09 adcb $0, $2 \0A\09 adcb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 135 ret void 136} 137define void @test_adc_16(i16 %a0, i16* %a1, i16 %a2) optsize { 138; GENERIC-LABEL: test_adc_16: 139; GENERIC: # %bb.0: 140; GENERIC-NEXT: #APP 141; GENERIC-NEXT: adcw $511, %ax # imm = 0x1FF 142; GENERIC-NEXT: # sched: [2:0.67] 143; GENERIC-NEXT: adcw $511, %di # imm = 0x1FF 144; GENERIC-NEXT: # sched: [2:0.67] 145; GENERIC-NEXT: adcw $511, (%rsi) # imm = 0x1FF 146; GENERIC-NEXT: # sched: [9:1.00] 147; GENERIC-NEXT: adcw $7, %di # sched: [2:0.67] 148; GENERIC-NEXT: adcw $7, (%rsi) # sched: [9:1.00] 149; GENERIC-NEXT: adcw %dx, %di # sched: [2:0.67] 150; GENERIC-NEXT: adcw %di, (%rsi) # sched: [9:1.00] 151; GENERIC-NEXT: adcw (%rsi), %di # sched: [7:0.67] 152; GENERIC-NEXT: #NO_APP 153; GENERIC-NEXT: retq # sched: [1:1.00] 154; 155; ATOM-LABEL: test_adc_16: 156; ATOM: # %bb.0: 157; ATOM-NEXT: #APP 158; ATOM-NEXT: adcw $511, %ax # imm = 0x1FF 159; ATOM-NEXT: # sched: [1:0.50] 160; ATOM-NEXT: adcw $511, %di # imm = 0x1FF 161; ATOM-NEXT: # sched: [1:0.50] 162; ATOM-NEXT: adcw $511, (%rsi) # imm = 0x1FF 163; ATOM-NEXT: # sched: [1:1.00] 164; ATOM-NEXT: adcw $7, %di # sched: [1:0.50] 165; ATOM-NEXT: adcw $7, (%rsi) # sched: [1:1.00] 166; ATOM-NEXT: adcw %dx, %di # sched: [1:0.50] 167; ATOM-NEXT: adcw %di, (%rsi) # sched: [1:1.00] 168; ATOM-NEXT: adcw (%rsi), %di # sched: [1:1.00] 169; ATOM-NEXT: #NO_APP 170; ATOM-NEXT: retq # sched: [79:39.50] 171; 172; SLM-LABEL: test_adc_16: 173; SLM: # %bb.0: 174; SLM-NEXT: #APP 175; SLM-NEXT: adcw $511, %ax # imm = 0x1FF 176; SLM-NEXT: # sched: [1:0.50] 177; SLM-NEXT: adcw $511, %di # imm = 0x1FF 178; SLM-NEXT: # sched: [1:0.50] 179; SLM-NEXT: adcw $511, (%rsi) # imm = 0x1FF 180; SLM-NEXT: # sched: [5:2.00] 181; SLM-NEXT: adcw $7, %di # sched: [1:0.50] 182; SLM-NEXT: adcw $7, (%rsi) # sched: [5:2.00] 183; SLM-NEXT: adcw %dx, %di # sched: [1:0.50] 184; SLM-NEXT: adcw %di, (%rsi) # sched: [5:2.00] 185; SLM-NEXT: adcw (%rsi), %di # sched: [4:1.00] 186; SLM-NEXT: #NO_APP 187; SLM-NEXT: retq # sched: [4:1.00] 188; 189; SANDY-LABEL: test_adc_16: 190; SANDY: # %bb.0: 191; SANDY-NEXT: #APP 192; SANDY-NEXT: adcw $511, %ax # imm = 0x1FF 193; SANDY-NEXT: # sched: [2:0.67] 194; SANDY-NEXT: adcw $511, %di # imm = 0x1FF 195; SANDY-NEXT: # sched: [2:0.67] 196; SANDY-NEXT: adcw $511, (%rsi) # imm = 0x1FF 197; SANDY-NEXT: # sched: [9:1.00] 198; SANDY-NEXT: adcw $7, %di # sched: [2:0.67] 199; SANDY-NEXT: adcw $7, (%rsi) # sched: [9:1.00] 200; SANDY-NEXT: adcw %dx, %di # sched: [2:0.67] 201; SANDY-NEXT: adcw %di, (%rsi) # sched: [9:1.00] 202; SANDY-NEXT: adcw (%rsi), %di # sched: [7:0.67] 203; SANDY-NEXT: #NO_APP 204; SANDY-NEXT: retq # sched: [1:1.00] 205; 206; HASWELL-LABEL: test_adc_16: 207; HASWELL: # %bb.0: 208; HASWELL-NEXT: #APP 209; HASWELL-NEXT: adcw $511, %ax # imm = 0x1FF 210; HASWELL-NEXT: # sched: [2:0.50] 211; HASWELL-NEXT: adcw $511, %di # imm = 0x1FF 212; HASWELL-NEXT: # sched: [2:0.50] 213; HASWELL-NEXT: adcw $511, (%rsi) # imm = 0x1FF 214; HASWELL-NEXT: # sched: [9:1.00] 215; HASWELL-NEXT: adcw $7, %di # sched: [2:0.50] 216; HASWELL-NEXT: adcw $7, (%rsi) # sched: [9:1.00] 217; HASWELL-NEXT: adcw %dx, %di # sched: [2:0.50] 218; HASWELL-NEXT: adcw %di, (%rsi) # sched: [9:1.00] 219; HASWELL-NEXT: adcw (%rsi), %di # sched: [7:0.50] 220; HASWELL-NEXT: #NO_APP 221; HASWELL-NEXT: retq # sched: [7:1.00] 222; 223; BROADWELL-LABEL: test_adc_16: 224; BROADWELL: # %bb.0: 225; BROADWELL-NEXT: #APP 226; BROADWELL-NEXT: adcw $511, %ax # imm = 0x1FF 227; BROADWELL-NEXT: # sched: [1:0.50] 228; BROADWELL-NEXT: adcw $511, %di # imm = 0x1FF 229; BROADWELL-NEXT: # sched: [1:0.50] 230; BROADWELL-NEXT: adcw $511, (%rsi) # imm = 0x1FF 231; BROADWELL-NEXT: # sched: [8:1.00] 232; BROADWELL-NEXT: adcw $7, %di # sched: [1:0.50] 233; BROADWELL-NEXT: adcw $7, (%rsi) # sched: [8:1.00] 234; BROADWELL-NEXT: adcw %dx, %di # sched: [1:0.50] 235; BROADWELL-NEXT: adcw %di, (%rsi) # sched: [8:1.00] 236; BROADWELL-NEXT: adcw (%rsi), %di # sched: [6:0.50] 237; BROADWELL-NEXT: #NO_APP 238; BROADWELL-NEXT: retq # sched: [7:1.00] 239; 240; SKYLAKE-LABEL: test_adc_16: 241; SKYLAKE: # %bb.0: 242; SKYLAKE-NEXT: #APP 243; SKYLAKE-NEXT: adcw $511, %ax # imm = 0x1FF 244; SKYLAKE-NEXT: # sched: [1:0.50] 245; SKYLAKE-NEXT: adcw $511, %di # imm = 0x1FF 246; SKYLAKE-NEXT: # sched: [1:0.50] 247; SKYLAKE-NEXT: adcw $511, (%rsi) # imm = 0x1FF 248; SKYLAKE-NEXT: # sched: [8:1.00] 249; SKYLAKE-NEXT: adcw $7, %di # sched: [1:0.50] 250; SKYLAKE-NEXT: adcw $7, (%rsi) # sched: [8:1.00] 251; SKYLAKE-NEXT: adcw %dx, %di # sched: [1:0.50] 252; SKYLAKE-NEXT: adcw %di, (%rsi) # sched: [8:1.00] 253; SKYLAKE-NEXT: adcw (%rsi), %di # sched: [6:0.50] 254; SKYLAKE-NEXT: #NO_APP 255; SKYLAKE-NEXT: retq # sched: [7:1.00] 256; 257; SKX-LABEL: test_adc_16: 258; SKX: # %bb.0: 259; SKX-NEXT: #APP 260; SKX-NEXT: adcw $511, %ax # imm = 0x1FF 261; SKX-NEXT: # sched: [1:0.50] 262; SKX-NEXT: adcw $511, %di # imm = 0x1FF 263; SKX-NEXT: # sched: [1:0.50] 264; SKX-NEXT: adcw $511, (%rsi) # imm = 0x1FF 265; SKX-NEXT: # sched: [8:1.00] 266; SKX-NEXT: adcw $7, %di # sched: [1:0.50] 267; SKX-NEXT: adcw $7, (%rsi) # sched: [8:1.00] 268; SKX-NEXT: adcw %dx, %di # sched: [1:0.50] 269; SKX-NEXT: adcw %di, (%rsi) # sched: [8:1.00] 270; SKX-NEXT: adcw (%rsi), %di # sched: [6:0.50] 271; SKX-NEXT: #NO_APP 272; SKX-NEXT: retq # sched: [7:1.00] 273; 274; BTVER2-LABEL: test_adc_16: 275; BTVER2: # %bb.0: 276; BTVER2-NEXT: #APP 277; BTVER2-NEXT: adcw $511, %ax # imm = 0x1FF 278; BTVER2-NEXT: # sched: [1:1.00] 279; BTVER2-NEXT: adcw $511, %di # imm = 0x1FF 280; BTVER2-NEXT: # sched: [1:1.00] 281; BTVER2-NEXT: adcw $511, (%rsi) # imm = 0x1FF 282; BTVER2-NEXT: # sched: [5:1.00] 283; BTVER2-NEXT: adcw $7, %di # sched: [1:1.00] 284; BTVER2-NEXT: adcw $7, (%rsi) # sched: [5:1.00] 285; BTVER2-NEXT: adcw %dx, %di # sched: [1:1.00] 286; BTVER2-NEXT: adcw %di, (%rsi) # sched: [5:1.00] 287; BTVER2-NEXT: adcw (%rsi), %di # sched: [4:1.00] 288; BTVER2-NEXT: #NO_APP 289; BTVER2-NEXT: retq # sched: [4:1.00] 290; 291; ZNVER1-LABEL: test_adc_16: 292; ZNVER1: # %bb.0: 293; ZNVER1-NEXT: #APP 294; ZNVER1-NEXT: adcw $511, %ax # imm = 0x1FF 295; ZNVER1-NEXT: # sched: [1:0.25] 296; ZNVER1-NEXT: adcw $511, %di # imm = 0x1FF 297; ZNVER1-NEXT: # sched: [1:0.25] 298; ZNVER1-NEXT: adcw $511, (%rsi) # imm = 0x1FF 299; ZNVER1-NEXT: # sched: [5:0.50] 300; ZNVER1-NEXT: adcw $7, %di # sched: [1:0.25] 301; ZNVER1-NEXT: adcw $7, (%rsi) # sched: [5:0.50] 302; ZNVER1-NEXT: adcw %dx, %di # sched: [1:0.25] 303; ZNVER1-NEXT: adcw %di, (%rsi) # sched: [5:0.50] 304; ZNVER1-NEXT: adcw (%rsi), %di # sched: [5:0.50] 305; ZNVER1-NEXT: #NO_APP 306; ZNVER1-NEXT: retq # sched: [1:0.50] 307 tail call void asm "adcw $3, %AX \0A\09 adcw $3, $0 \0A\09 adcw $3, $2 \0A\09 adcw $4, $0 \0A\09 adcw $4, $2 \0A\09 adcw $1, $0 \0A\09 adcw $0, $2 \0A\09 adcw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 308 ret void 309} 310define void @test_adc_32(i32 %a0, i32* %a1, i32 %a2) optsize { 311; GENERIC-LABEL: test_adc_32: 312; GENERIC: # %bb.0: 313; GENERIC-NEXT: #APP 314; GENERIC-NEXT: adcl $665536, %eax # imm = 0xA27C0 315; GENERIC-NEXT: # sched: [2:0.67] 316; GENERIC-NEXT: adcl $665536, %edi # imm = 0xA27C0 317; GENERIC-NEXT: # sched: [2:0.67] 318; GENERIC-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 319; GENERIC-NEXT: # sched: [9:1.00] 320; GENERIC-NEXT: adcl $7, %edi # sched: [2:0.67] 321; GENERIC-NEXT: adcl $7, (%rsi) # sched: [9:1.00] 322; GENERIC-NEXT: adcl %edx, %edi # sched: [2:0.67] 323; GENERIC-NEXT: adcl %edi, (%rsi) # sched: [9:1.00] 324; GENERIC-NEXT: adcl (%rsi), %edi # sched: [7:0.67] 325; GENERIC-NEXT: #NO_APP 326; GENERIC-NEXT: retq # sched: [1:1.00] 327; 328; ATOM-LABEL: test_adc_32: 329; ATOM: # %bb.0: 330; ATOM-NEXT: #APP 331; ATOM-NEXT: adcl $665536, %eax # imm = 0xA27C0 332; ATOM-NEXT: # sched: [1:0.50] 333; ATOM-NEXT: adcl $665536, %edi # imm = 0xA27C0 334; ATOM-NEXT: # sched: [1:0.50] 335; ATOM-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 336; ATOM-NEXT: # sched: [1:1.00] 337; ATOM-NEXT: adcl $7, %edi # sched: [1:0.50] 338; ATOM-NEXT: adcl $7, (%rsi) # sched: [1:1.00] 339; ATOM-NEXT: adcl %edx, %edi # sched: [1:0.50] 340; ATOM-NEXT: adcl %edi, (%rsi) # sched: [1:1.00] 341; ATOM-NEXT: adcl (%rsi), %edi # sched: [1:1.00] 342; ATOM-NEXT: #NO_APP 343; ATOM-NEXT: retq # sched: [79:39.50] 344; 345; SLM-LABEL: test_adc_32: 346; SLM: # %bb.0: 347; SLM-NEXT: #APP 348; SLM-NEXT: adcl $665536, %eax # imm = 0xA27C0 349; SLM-NEXT: # sched: [1:0.50] 350; SLM-NEXT: adcl $665536, %edi # imm = 0xA27C0 351; SLM-NEXT: # sched: [1:0.50] 352; SLM-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 353; SLM-NEXT: # sched: [5:2.00] 354; SLM-NEXT: adcl $7, %edi # sched: [1:0.50] 355; SLM-NEXT: adcl $7, (%rsi) # sched: [5:2.00] 356; SLM-NEXT: adcl %edx, %edi # sched: [1:0.50] 357; SLM-NEXT: adcl %edi, (%rsi) # sched: [5:2.00] 358; SLM-NEXT: adcl (%rsi), %edi # sched: [4:1.00] 359; SLM-NEXT: #NO_APP 360; SLM-NEXT: retq # sched: [4:1.00] 361; 362; SANDY-LABEL: test_adc_32: 363; SANDY: # %bb.0: 364; SANDY-NEXT: #APP 365; SANDY-NEXT: adcl $665536, %eax # imm = 0xA27C0 366; SANDY-NEXT: # sched: [2:0.67] 367; SANDY-NEXT: adcl $665536, %edi # imm = 0xA27C0 368; SANDY-NEXT: # sched: [2:0.67] 369; SANDY-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 370; SANDY-NEXT: # sched: [9:1.00] 371; SANDY-NEXT: adcl $7, %edi # sched: [2:0.67] 372; SANDY-NEXT: adcl $7, (%rsi) # sched: [9:1.00] 373; SANDY-NEXT: adcl %edx, %edi # sched: [2:0.67] 374; SANDY-NEXT: adcl %edi, (%rsi) # sched: [9:1.00] 375; SANDY-NEXT: adcl (%rsi), %edi # sched: [7:0.67] 376; SANDY-NEXT: #NO_APP 377; SANDY-NEXT: retq # sched: [1:1.00] 378; 379; HASWELL-LABEL: test_adc_32: 380; HASWELL: # %bb.0: 381; HASWELL-NEXT: #APP 382; HASWELL-NEXT: adcl $665536, %eax # imm = 0xA27C0 383; HASWELL-NEXT: # sched: [2:0.50] 384; HASWELL-NEXT: adcl $665536, %edi # imm = 0xA27C0 385; HASWELL-NEXT: # sched: [2:0.50] 386; HASWELL-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 387; HASWELL-NEXT: # sched: [9:1.00] 388; HASWELL-NEXT: adcl $7, %edi # sched: [2:0.50] 389; HASWELL-NEXT: adcl $7, (%rsi) # sched: [9:1.00] 390; HASWELL-NEXT: adcl %edx, %edi # sched: [2:0.50] 391; HASWELL-NEXT: adcl %edi, (%rsi) # sched: [9:1.00] 392; HASWELL-NEXT: adcl (%rsi), %edi # sched: [7:0.50] 393; HASWELL-NEXT: #NO_APP 394; HASWELL-NEXT: retq # sched: [7:1.00] 395; 396; BROADWELL-LABEL: test_adc_32: 397; BROADWELL: # %bb.0: 398; BROADWELL-NEXT: #APP 399; BROADWELL-NEXT: adcl $665536, %eax # imm = 0xA27C0 400; BROADWELL-NEXT: # sched: [1:0.50] 401; BROADWELL-NEXT: adcl $665536, %edi # imm = 0xA27C0 402; BROADWELL-NEXT: # sched: [1:0.50] 403; BROADWELL-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 404; BROADWELL-NEXT: # sched: [8:1.00] 405; BROADWELL-NEXT: adcl $7, %edi # sched: [1:0.50] 406; BROADWELL-NEXT: adcl $7, (%rsi) # sched: [8:1.00] 407; BROADWELL-NEXT: adcl %edx, %edi # sched: [1:0.50] 408; BROADWELL-NEXT: adcl %edi, (%rsi) # sched: [8:1.00] 409; BROADWELL-NEXT: adcl (%rsi), %edi # sched: [6:0.50] 410; BROADWELL-NEXT: #NO_APP 411; BROADWELL-NEXT: retq # sched: [7:1.00] 412; 413; SKYLAKE-LABEL: test_adc_32: 414; SKYLAKE: # %bb.0: 415; SKYLAKE-NEXT: #APP 416; SKYLAKE-NEXT: adcl $665536, %eax # imm = 0xA27C0 417; SKYLAKE-NEXT: # sched: [1:0.50] 418; SKYLAKE-NEXT: adcl $665536, %edi # imm = 0xA27C0 419; SKYLAKE-NEXT: # sched: [1:0.50] 420; SKYLAKE-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 421; SKYLAKE-NEXT: # sched: [8:1.00] 422; SKYLAKE-NEXT: adcl $7, %edi # sched: [1:0.50] 423; SKYLAKE-NEXT: adcl $7, (%rsi) # sched: [8:1.00] 424; SKYLAKE-NEXT: adcl %edx, %edi # sched: [1:0.50] 425; SKYLAKE-NEXT: adcl %edi, (%rsi) # sched: [8:1.00] 426; SKYLAKE-NEXT: adcl (%rsi), %edi # sched: [6:0.50] 427; SKYLAKE-NEXT: #NO_APP 428; SKYLAKE-NEXT: retq # sched: [7:1.00] 429; 430; SKX-LABEL: test_adc_32: 431; SKX: # %bb.0: 432; SKX-NEXT: #APP 433; SKX-NEXT: adcl $665536, %eax # imm = 0xA27C0 434; SKX-NEXT: # sched: [1:0.50] 435; SKX-NEXT: adcl $665536, %edi # imm = 0xA27C0 436; SKX-NEXT: # sched: [1:0.50] 437; SKX-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 438; SKX-NEXT: # sched: [8:1.00] 439; SKX-NEXT: adcl $7, %edi # sched: [1:0.50] 440; SKX-NEXT: adcl $7, (%rsi) # sched: [8:1.00] 441; SKX-NEXT: adcl %edx, %edi # sched: [1:0.50] 442; SKX-NEXT: adcl %edi, (%rsi) # sched: [8:1.00] 443; SKX-NEXT: adcl (%rsi), %edi # sched: [6:0.50] 444; SKX-NEXT: #NO_APP 445; SKX-NEXT: retq # sched: [7:1.00] 446; 447; BTVER2-LABEL: test_adc_32: 448; BTVER2: # %bb.0: 449; BTVER2-NEXT: #APP 450; BTVER2-NEXT: adcl $665536, %eax # imm = 0xA27C0 451; BTVER2-NEXT: # sched: [1:1.00] 452; BTVER2-NEXT: adcl $665536, %edi # imm = 0xA27C0 453; BTVER2-NEXT: # sched: [1:1.00] 454; BTVER2-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 455; BTVER2-NEXT: # sched: [5:1.00] 456; BTVER2-NEXT: adcl $7, %edi # sched: [1:1.00] 457; BTVER2-NEXT: adcl $7, (%rsi) # sched: [5:1.00] 458; BTVER2-NEXT: adcl %edx, %edi # sched: [1:1.00] 459; BTVER2-NEXT: adcl %edi, (%rsi) # sched: [5:1.00] 460; BTVER2-NEXT: adcl (%rsi), %edi # sched: [4:1.00] 461; BTVER2-NEXT: #NO_APP 462; BTVER2-NEXT: retq # sched: [4:1.00] 463; 464; ZNVER1-LABEL: test_adc_32: 465; ZNVER1: # %bb.0: 466; ZNVER1-NEXT: #APP 467; ZNVER1-NEXT: adcl $665536, %eax # imm = 0xA27C0 468; ZNVER1-NEXT: # sched: [1:0.25] 469; ZNVER1-NEXT: adcl $665536, %edi # imm = 0xA27C0 470; ZNVER1-NEXT: # sched: [1:0.25] 471; ZNVER1-NEXT: adcl $665536, (%rsi) # imm = 0xA27C0 472; ZNVER1-NEXT: # sched: [5:0.50] 473; ZNVER1-NEXT: adcl $7, %edi # sched: [1:0.25] 474; ZNVER1-NEXT: adcl $7, (%rsi) # sched: [5:0.50] 475; ZNVER1-NEXT: adcl %edx, %edi # sched: [1:0.25] 476; ZNVER1-NEXT: adcl %edi, (%rsi) # sched: [5:0.50] 477; ZNVER1-NEXT: adcl (%rsi), %edi # sched: [5:0.50] 478; ZNVER1-NEXT: #NO_APP 479; ZNVER1-NEXT: retq # sched: [1:0.50] 480 tail call void asm "adcl $3, %EAX \0A\09 adcl $3, $0 \0A\09 adcl $3, $2 \0A\09 adcl $4, $0 \0A\09 adcl $4, $2 \0A\09 adcl $1, $0 \0A\09 adcl $0, $2 \0A\09 adcl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 481 ret void 482} 483define void @test_adc_64(i64 %a0, i64* %a1, i64 %a2) optsize { 484; GENERIC-LABEL: test_adc_64: 485; GENERIC: # %bb.0: 486; GENERIC-NEXT: #APP 487; GENERIC-NEXT: adcq $665536, %rax # imm = 0xA27C0 488; GENERIC-NEXT: # sched: [2:0.67] 489; GENERIC-NEXT: adcq $665536, %rdi # imm = 0xA27C0 490; GENERIC-NEXT: # sched: [2:0.67] 491; GENERIC-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 492; GENERIC-NEXT: # sched: [9:1.00] 493; GENERIC-NEXT: adcq $7, %rdi # sched: [2:0.67] 494; GENERIC-NEXT: adcq $7, (%rsi) # sched: [9:1.00] 495; GENERIC-NEXT: adcq %rdx, %rdi # sched: [2:0.67] 496; GENERIC-NEXT: adcq %rdi, (%rsi) # sched: [9:1.00] 497; GENERIC-NEXT: adcq (%rsi), %rdi # sched: [7:0.67] 498; GENERIC-NEXT: #NO_APP 499; GENERIC-NEXT: retq # sched: [1:1.00] 500; 501; ATOM-LABEL: test_adc_64: 502; ATOM: # %bb.0: 503; ATOM-NEXT: #APP 504; ATOM-NEXT: adcq $665536, %rax # imm = 0xA27C0 505; ATOM-NEXT: # sched: [1:0.50] 506; ATOM-NEXT: adcq $665536, %rdi # imm = 0xA27C0 507; ATOM-NEXT: # sched: [1:0.50] 508; ATOM-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 509; ATOM-NEXT: # sched: [1:1.00] 510; ATOM-NEXT: adcq $7, %rdi # sched: [1:0.50] 511; ATOM-NEXT: adcq $7, (%rsi) # sched: [1:1.00] 512; ATOM-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 513; ATOM-NEXT: adcq %rdi, (%rsi) # sched: [1:1.00] 514; ATOM-NEXT: adcq (%rsi), %rdi # sched: [1:1.00] 515; ATOM-NEXT: #NO_APP 516; ATOM-NEXT: retq # sched: [79:39.50] 517; 518; SLM-LABEL: test_adc_64: 519; SLM: # %bb.0: 520; SLM-NEXT: #APP 521; SLM-NEXT: adcq $665536, %rax # imm = 0xA27C0 522; SLM-NEXT: # sched: [1:0.50] 523; SLM-NEXT: adcq $665536, %rdi # imm = 0xA27C0 524; SLM-NEXT: # sched: [1:0.50] 525; SLM-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 526; SLM-NEXT: # sched: [5:2.00] 527; SLM-NEXT: adcq $7, %rdi # sched: [1:0.50] 528; SLM-NEXT: adcq $7, (%rsi) # sched: [5:2.00] 529; SLM-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 530; SLM-NEXT: adcq %rdi, (%rsi) # sched: [5:2.00] 531; SLM-NEXT: adcq (%rsi), %rdi # sched: [4:1.00] 532; SLM-NEXT: #NO_APP 533; SLM-NEXT: retq # sched: [4:1.00] 534; 535; SANDY-LABEL: test_adc_64: 536; SANDY: # %bb.0: 537; SANDY-NEXT: #APP 538; SANDY-NEXT: adcq $665536, %rax # imm = 0xA27C0 539; SANDY-NEXT: # sched: [2:0.67] 540; SANDY-NEXT: adcq $665536, %rdi # imm = 0xA27C0 541; SANDY-NEXT: # sched: [2:0.67] 542; SANDY-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 543; SANDY-NEXT: # sched: [9:1.00] 544; SANDY-NEXT: adcq $7, %rdi # sched: [2:0.67] 545; SANDY-NEXT: adcq $7, (%rsi) # sched: [9:1.00] 546; SANDY-NEXT: adcq %rdx, %rdi # sched: [2:0.67] 547; SANDY-NEXT: adcq %rdi, (%rsi) # sched: [9:1.00] 548; SANDY-NEXT: adcq (%rsi), %rdi # sched: [7:0.67] 549; SANDY-NEXT: #NO_APP 550; SANDY-NEXT: retq # sched: [1:1.00] 551; 552; HASWELL-LABEL: test_adc_64: 553; HASWELL: # %bb.0: 554; HASWELL-NEXT: #APP 555; HASWELL-NEXT: adcq $665536, %rax # imm = 0xA27C0 556; HASWELL-NEXT: # sched: [2:0.50] 557; HASWELL-NEXT: adcq $665536, %rdi # imm = 0xA27C0 558; HASWELL-NEXT: # sched: [2:0.50] 559; HASWELL-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 560; HASWELL-NEXT: # sched: [9:1.00] 561; HASWELL-NEXT: adcq $7, %rdi # sched: [2:0.50] 562; HASWELL-NEXT: adcq $7, (%rsi) # sched: [9:1.00] 563; HASWELL-NEXT: adcq %rdx, %rdi # sched: [2:0.50] 564; HASWELL-NEXT: adcq %rdi, (%rsi) # sched: [9:1.00] 565; HASWELL-NEXT: adcq (%rsi), %rdi # sched: [7:0.50] 566; HASWELL-NEXT: #NO_APP 567; HASWELL-NEXT: retq # sched: [7:1.00] 568; 569; BROADWELL-LABEL: test_adc_64: 570; BROADWELL: # %bb.0: 571; BROADWELL-NEXT: #APP 572; BROADWELL-NEXT: adcq $665536, %rax # imm = 0xA27C0 573; BROADWELL-NEXT: # sched: [1:0.50] 574; BROADWELL-NEXT: adcq $665536, %rdi # imm = 0xA27C0 575; BROADWELL-NEXT: # sched: [1:0.50] 576; BROADWELL-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 577; BROADWELL-NEXT: # sched: [8:1.00] 578; BROADWELL-NEXT: adcq $7, %rdi # sched: [1:0.50] 579; BROADWELL-NEXT: adcq $7, (%rsi) # sched: [8:1.00] 580; BROADWELL-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 581; BROADWELL-NEXT: adcq %rdi, (%rsi) # sched: [8:1.00] 582; BROADWELL-NEXT: adcq (%rsi), %rdi # sched: [6:0.50] 583; BROADWELL-NEXT: #NO_APP 584; BROADWELL-NEXT: retq # sched: [7:1.00] 585; 586; SKYLAKE-LABEL: test_adc_64: 587; SKYLAKE: # %bb.0: 588; SKYLAKE-NEXT: #APP 589; SKYLAKE-NEXT: adcq $665536, %rax # imm = 0xA27C0 590; SKYLAKE-NEXT: # sched: [1:0.50] 591; SKYLAKE-NEXT: adcq $665536, %rdi # imm = 0xA27C0 592; SKYLAKE-NEXT: # sched: [1:0.50] 593; SKYLAKE-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 594; SKYLAKE-NEXT: # sched: [8:1.00] 595; SKYLAKE-NEXT: adcq $7, %rdi # sched: [1:0.50] 596; SKYLAKE-NEXT: adcq $7, (%rsi) # sched: [8:1.00] 597; SKYLAKE-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 598; SKYLAKE-NEXT: adcq %rdi, (%rsi) # sched: [8:1.00] 599; SKYLAKE-NEXT: adcq (%rsi), %rdi # sched: [6:0.50] 600; SKYLAKE-NEXT: #NO_APP 601; SKYLAKE-NEXT: retq # sched: [7:1.00] 602; 603; SKX-LABEL: test_adc_64: 604; SKX: # %bb.0: 605; SKX-NEXT: #APP 606; SKX-NEXT: adcq $665536, %rax # imm = 0xA27C0 607; SKX-NEXT: # sched: [1:0.50] 608; SKX-NEXT: adcq $665536, %rdi # imm = 0xA27C0 609; SKX-NEXT: # sched: [1:0.50] 610; SKX-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 611; SKX-NEXT: # sched: [8:1.00] 612; SKX-NEXT: adcq $7, %rdi # sched: [1:0.50] 613; SKX-NEXT: adcq $7, (%rsi) # sched: [8:1.00] 614; SKX-NEXT: adcq %rdx, %rdi # sched: [1:0.50] 615; SKX-NEXT: adcq %rdi, (%rsi) # sched: [8:1.00] 616; SKX-NEXT: adcq (%rsi), %rdi # sched: [6:0.50] 617; SKX-NEXT: #NO_APP 618; SKX-NEXT: retq # sched: [7:1.00] 619; 620; BTVER2-LABEL: test_adc_64: 621; BTVER2: # %bb.0: 622; BTVER2-NEXT: #APP 623; BTVER2-NEXT: adcq $665536, %rax # imm = 0xA27C0 624; BTVER2-NEXT: # sched: [1:1.00] 625; BTVER2-NEXT: adcq $665536, %rdi # imm = 0xA27C0 626; BTVER2-NEXT: # sched: [1:1.00] 627; BTVER2-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 628; BTVER2-NEXT: # sched: [5:1.00] 629; BTVER2-NEXT: adcq $7, %rdi # sched: [1:1.00] 630; BTVER2-NEXT: adcq $7, (%rsi) # sched: [5:1.00] 631; BTVER2-NEXT: adcq %rdx, %rdi # sched: [1:1.00] 632; BTVER2-NEXT: adcq %rdi, (%rsi) # sched: [5:1.00] 633; BTVER2-NEXT: adcq (%rsi), %rdi # sched: [4:1.00] 634; BTVER2-NEXT: #NO_APP 635; BTVER2-NEXT: retq # sched: [4:1.00] 636; 637; ZNVER1-LABEL: test_adc_64: 638; ZNVER1: # %bb.0: 639; ZNVER1-NEXT: #APP 640; ZNVER1-NEXT: adcq $665536, %rax # imm = 0xA27C0 641; ZNVER1-NEXT: # sched: [1:0.25] 642; ZNVER1-NEXT: adcq $665536, %rdi # imm = 0xA27C0 643; ZNVER1-NEXT: # sched: [1:0.25] 644; ZNVER1-NEXT: adcq $665536, (%rsi) # imm = 0xA27C0 645; ZNVER1-NEXT: # sched: [5:0.50] 646; ZNVER1-NEXT: adcq $7, %rdi # sched: [1:0.25] 647; ZNVER1-NEXT: adcq $7, (%rsi) # sched: [5:0.50] 648; ZNVER1-NEXT: adcq %rdx, %rdi # sched: [1:0.25] 649; ZNVER1-NEXT: adcq %rdi, (%rsi) # sched: [5:0.50] 650; ZNVER1-NEXT: adcq (%rsi), %rdi # sched: [5:0.50] 651; ZNVER1-NEXT: #NO_APP 652; ZNVER1-NEXT: retq # sched: [1:0.50] 653 tail call void asm "adcq $3, %RAX \0A\09 adcq $3, $0 \0A\09 adcq $3, $2 \0A\09 adcq $4, $0 \0A\09 adcq $4, $2 \0A\09 adcq $1, $0 \0A\09 adcq $0, $2 \0A\09 adcq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 654 ret void 655} 656 657define void @test_add_8(i8 %a0, i8* %a1, i8 %a2) optsize { 658; GENERIC-LABEL: test_add_8: 659; GENERIC: # %bb.0: 660; GENERIC-NEXT: #APP 661; GENERIC-NEXT: addb $7, %al # sched: [1:0.33] 662; GENERIC-NEXT: addb $7, %dil # sched: [1:0.33] 663; GENERIC-NEXT: addb $7, (%rsi) # sched: [7:1.00] 664; GENERIC-NEXT: addb %dl, %dil # sched: [1:0.33] 665; GENERIC-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 666; GENERIC-NEXT: addb (%rsi), %dil # sched: [6:0.50] 667; GENERIC-NEXT: #NO_APP 668; GENERIC-NEXT: retq # sched: [1:1.00] 669; 670; ATOM-LABEL: test_add_8: 671; ATOM: # %bb.0: 672; ATOM-NEXT: #APP 673; ATOM-NEXT: addb $7, %al # sched: [1:0.50] 674; ATOM-NEXT: addb $7, %dil # sched: [1:0.50] 675; ATOM-NEXT: addb $7, (%rsi) # sched: [1:1.00] 676; ATOM-NEXT: addb %dl, %dil # sched: [1:0.50] 677; ATOM-NEXT: addb %dil, (%rsi) # sched: [1:1.00] 678; ATOM-NEXT: addb (%rsi), %dil # sched: [1:1.00] 679; ATOM-NEXT: #NO_APP 680; ATOM-NEXT: retq # sched: [79:39.50] 681; 682; SLM-LABEL: test_add_8: 683; SLM: # %bb.0: 684; SLM-NEXT: #APP 685; SLM-NEXT: addb $7, %al # sched: [1:0.50] 686; SLM-NEXT: addb $7, %dil # sched: [1:0.50] 687; SLM-NEXT: addb $7, (%rsi) # sched: [5:2.00] 688; SLM-NEXT: addb %dl, %dil # sched: [1:0.50] 689; SLM-NEXT: addb %dil, (%rsi) # sched: [5:2.00] 690; SLM-NEXT: addb (%rsi), %dil # sched: [4:1.00] 691; SLM-NEXT: #NO_APP 692; SLM-NEXT: retq # sched: [4:1.00] 693; 694; SANDY-LABEL: test_add_8: 695; SANDY: # %bb.0: 696; SANDY-NEXT: #APP 697; SANDY-NEXT: addb $7, %al # sched: [1:0.33] 698; SANDY-NEXT: addb $7, %dil # sched: [1:0.33] 699; SANDY-NEXT: addb $7, (%rsi) # sched: [7:1.00] 700; SANDY-NEXT: addb %dl, %dil # sched: [1:0.33] 701; SANDY-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 702; SANDY-NEXT: addb (%rsi), %dil # sched: [6:0.50] 703; SANDY-NEXT: #NO_APP 704; SANDY-NEXT: retq # sched: [1:1.00] 705; 706; HASWELL-LABEL: test_add_8: 707; HASWELL: # %bb.0: 708; HASWELL-NEXT: #APP 709; HASWELL-NEXT: addb $7, %al # sched: [1:0.25] 710; HASWELL-NEXT: addb $7, %dil # sched: [1:0.25] 711; HASWELL-NEXT: addb $7, (%rsi) # sched: [7:1.00] 712; HASWELL-NEXT: addb %dl, %dil # sched: [1:0.25] 713; HASWELL-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 714; HASWELL-NEXT: addb (%rsi), %dil # sched: [6:0.50] 715; HASWELL-NEXT: #NO_APP 716; HASWELL-NEXT: retq # sched: [7:1.00] 717; 718; BROADWELL-LABEL: test_add_8: 719; BROADWELL: # %bb.0: 720; BROADWELL-NEXT: #APP 721; BROADWELL-NEXT: addb $7, %al # sched: [1:0.25] 722; BROADWELL-NEXT: addb $7, %dil # sched: [1:0.25] 723; BROADWELL-NEXT: addb $7, (%rsi) # sched: [7:1.00] 724; BROADWELL-NEXT: addb %dl, %dil # sched: [1:0.25] 725; BROADWELL-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 726; BROADWELL-NEXT: addb (%rsi), %dil # sched: [6:0.50] 727; BROADWELL-NEXT: #NO_APP 728; BROADWELL-NEXT: retq # sched: [7:1.00] 729; 730; SKYLAKE-LABEL: test_add_8: 731; SKYLAKE: # %bb.0: 732; SKYLAKE-NEXT: #APP 733; SKYLAKE-NEXT: addb $7, %al # sched: [1:0.25] 734; SKYLAKE-NEXT: addb $7, %dil # sched: [1:0.25] 735; SKYLAKE-NEXT: addb $7, (%rsi) # sched: [7:1.00] 736; SKYLAKE-NEXT: addb %dl, %dil # sched: [1:0.25] 737; SKYLAKE-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 738; SKYLAKE-NEXT: addb (%rsi), %dil # sched: [6:0.50] 739; SKYLAKE-NEXT: #NO_APP 740; SKYLAKE-NEXT: retq # sched: [7:1.00] 741; 742; SKX-LABEL: test_add_8: 743; SKX: # %bb.0: 744; SKX-NEXT: #APP 745; SKX-NEXT: addb $7, %al # sched: [1:0.25] 746; SKX-NEXT: addb $7, %dil # sched: [1:0.25] 747; SKX-NEXT: addb $7, (%rsi) # sched: [7:1.00] 748; SKX-NEXT: addb %dl, %dil # sched: [1:0.25] 749; SKX-NEXT: addb %dil, (%rsi) # sched: [7:1.00] 750; SKX-NEXT: addb (%rsi), %dil # sched: [6:0.50] 751; SKX-NEXT: #NO_APP 752; SKX-NEXT: retq # sched: [7:1.00] 753; 754; BTVER2-LABEL: test_add_8: 755; BTVER2: # %bb.0: 756; BTVER2-NEXT: #APP 757; BTVER2-NEXT: addb $7, %al # sched: [1:0.50] 758; BTVER2-NEXT: addb $7, %dil # sched: [1:0.50] 759; BTVER2-NEXT: addb $7, (%rsi) # sched: [5:1.00] 760; BTVER2-NEXT: addb %dl, %dil # sched: [1:0.50] 761; BTVER2-NEXT: addb %dil, (%rsi) # sched: [5:1.00] 762; BTVER2-NEXT: addb (%rsi), %dil # sched: [4:1.00] 763; BTVER2-NEXT: #NO_APP 764; BTVER2-NEXT: retq # sched: [4:1.00] 765; 766; ZNVER1-LABEL: test_add_8: 767; ZNVER1: # %bb.0: 768; ZNVER1-NEXT: #APP 769; ZNVER1-NEXT: addb $7, %al # sched: [1:0.25] 770; ZNVER1-NEXT: addb $7, %dil # sched: [1:0.25] 771; ZNVER1-NEXT: addb $7, (%rsi) # sched: [5:0.50] 772; ZNVER1-NEXT: addb %dl, %dil # sched: [1:0.25] 773; ZNVER1-NEXT: addb %dil, (%rsi) # sched: [5:0.50] 774; ZNVER1-NEXT: addb (%rsi), %dil # sched: [5:0.50] 775; ZNVER1-NEXT: #NO_APP 776; ZNVER1-NEXT: retq # sched: [1:0.50] 777 tail call void asm "addb $3, %AL \0A\09 addb $3, $0 \0A\09 addb $3, $2 \0A\09 addb $1, $0 \0A\09 addb $0, $2 \0A\09 addb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 778 ret void 779} 780define void @test_add_16(i16 %a0, i16* %a1, i16 %a2) optsize { 781; GENERIC-LABEL: test_add_16: 782; GENERIC: # %bb.0: 783; GENERIC-NEXT: #APP 784; GENERIC-NEXT: addw $511, %ax # imm = 0x1FF 785; GENERIC-NEXT: # sched: [1:0.33] 786; GENERIC-NEXT: addw $511, %di # imm = 0x1FF 787; GENERIC-NEXT: # sched: [1:0.33] 788; GENERIC-NEXT: addw $511, (%rsi) # imm = 0x1FF 789; GENERIC-NEXT: # sched: [7:1.00] 790; GENERIC-NEXT: addw $7, %di # sched: [1:0.33] 791; GENERIC-NEXT: addw $7, (%rsi) # sched: [7:1.00] 792; GENERIC-NEXT: addw %dx, %di # sched: [1:0.33] 793; GENERIC-NEXT: addw %di, (%rsi) # sched: [7:1.00] 794; GENERIC-NEXT: addw (%rsi), %di # sched: [6:0.50] 795; GENERIC-NEXT: #NO_APP 796; GENERIC-NEXT: retq # sched: [1:1.00] 797; 798; ATOM-LABEL: test_add_16: 799; ATOM: # %bb.0: 800; ATOM-NEXT: #APP 801; ATOM-NEXT: addw $511, %ax # imm = 0x1FF 802; ATOM-NEXT: # sched: [1:0.50] 803; ATOM-NEXT: addw $511, %di # imm = 0x1FF 804; ATOM-NEXT: # sched: [1:0.50] 805; ATOM-NEXT: addw $511, (%rsi) # imm = 0x1FF 806; ATOM-NEXT: # sched: [1:1.00] 807; ATOM-NEXT: addw $7, %di # sched: [1:0.50] 808; ATOM-NEXT: addw $7, (%rsi) # sched: [1:1.00] 809; ATOM-NEXT: addw %dx, %di # sched: [1:0.50] 810; ATOM-NEXT: addw %di, (%rsi) # sched: [1:1.00] 811; ATOM-NEXT: addw (%rsi), %di # sched: [1:1.00] 812; ATOM-NEXT: #NO_APP 813; ATOM-NEXT: retq # sched: [79:39.50] 814; 815; SLM-LABEL: test_add_16: 816; SLM: # %bb.0: 817; SLM-NEXT: #APP 818; SLM-NEXT: addw $511, %ax # imm = 0x1FF 819; SLM-NEXT: # sched: [1:0.50] 820; SLM-NEXT: addw $511, %di # imm = 0x1FF 821; SLM-NEXT: # sched: [1:0.50] 822; SLM-NEXT: addw $511, (%rsi) # imm = 0x1FF 823; SLM-NEXT: # sched: [5:2.00] 824; SLM-NEXT: addw $7, %di # sched: [1:0.50] 825; SLM-NEXT: addw $7, (%rsi) # sched: [5:2.00] 826; SLM-NEXT: addw %dx, %di # sched: [1:0.50] 827; SLM-NEXT: addw %di, (%rsi) # sched: [5:2.00] 828; SLM-NEXT: addw (%rsi), %di # sched: [4:1.00] 829; SLM-NEXT: #NO_APP 830; SLM-NEXT: retq # sched: [4:1.00] 831; 832; SANDY-LABEL: test_add_16: 833; SANDY: # %bb.0: 834; SANDY-NEXT: #APP 835; SANDY-NEXT: addw $511, %ax # imm = 0x1FF 836; SANDY-NEXT: # sched: [1:0.33] 837; SANDY-NEXT: addw $511, %di # imm = 0x1FF 838; SANDY-NEXT: # sched: [1:0.33] 839; SANDY-NEXT: addw $511, (%rsi) # imm = 0x1FF 840; SANDY-NEXT: # sched: [7:1.00] 841; SANDY-NEXT: addw $7, %di # sched: [1:0.33] 842; SANDY-NEXT: addw $7, (%rsi) # sched: [7:1.00] 843; SANDY-NEXT: addw %dx, %di # sched: [1:0.33] 844; SANDY-NEXT: addw %di, (%rsi) # sched: [7:1.00] 845; SANDY-NEXT: addw (%rsi), %di # sched: [6:0.50] 846; SANDY-NEXT: #NO_APP 847; SANDY-NEXT: retq # sched: [1:1.00] 848; 849; HASWELL-LABEL: test_add_16: 850; HASWELL: # %bb.0: 851; HASWELL-NEXT: #APP 852; HASWELL-NEXT: addw $511, %ax # imm = 0x1FF 853; HASWELL-NEXT: # sched: [1:0.25] 854; HASWELL-NEXT: addw $511, %di # imm = 0x1FF 855; HASWELL-NEXT: # sched: [1:0.25] 856; HASWELL-NEXT: addw $511, (%rsi) # imm = 0x1FF 857; HASWELL-NEXT: # sched: [7:1.00] 858; HASWELL-NEXT: addw $7, %di # sched: [1:0.25] 859; HASWELL-NEXT: addw $7, (%rsi) # sched: [7:1.00] 860; HASWELL-NEXT: addw %dx, %di # sched: [1:0.25] 861; HASWELL-NEXT: addw %di, (%rsi) # sched: [7:1.00] 862; HASWELL-NEXT: addw (%rsi), %di # sched: [6:0.50] 863; HASWELL-NEXT: #NO_APP 864; HASWELL-NEXT: retq # sched: [7:1.00] 865; 866; BROADWELL-LABEL: test_add_16: 867; BROADWELL: # %bb.0: 868; BROADWELL-NEXT: #APP 869; BROADWELL-NEXT: addw $511, %ax # imm = 0x1FF 870; BROADWELL-NEXT: # sched: [1:0.25] 871; BROADWELL-NEXT: addw $511, %di # imm = 0x1FF 872; BROADWELL-NEXT: # sched: [1:0.25] 873; BROADWELL-NEXT: addw $511, (%rsi) # imm = 0x1FF 874; BROADWELL-NEXT: # sched: [7:1.00] 875; BROADWELL-NEXT: addw $7, %di # sched: [1:0.25] 876; BROADWELL-NEXT: addw $7, (%rsi) # sched: [7:1.00] 877; BROADWELL-NEXT: addw %dx, %di # sched: [1:0.25] 878; BROADWELL-NEXT: addw %di, (%rsi) # sched: [7:1.00] 879; BROADWELL-NEXT: addw (%rsi), %di # sched: [6:0.50] 880; BROADWELL-NEXT: #NO_APP 881; BROADWELL-NEXT: retq # sched: [7:1.00] 882; 883; SKYLAKE-LABEL: test_add_16: 884; SKYLAKE: # %bb.0: 885; SKYLAKE-NEXT: #APP 886; SKYLAKE-NEXT: addw $511, %ax # imm = 0x1FF 887; SKYLAKE-NEXT: # sched: [1:0.25] 888; SKYLAKE-NEXT: addw $511, %di # imm = 0x1FF 889; SKYLAKE-NEXT: # sched: [1:0.25] 890; SKYLAKE-NEXT: addw $511, (%rsi) # imm = 0x1FF 891; SKYLAKE-NEXT: # sched: [7:1.00] 892; SKYLAKE-NEXT: addw $7, %di # sched: [1:0.25] 893; SKYLAKE-NEXT: addw $7, (%rsi) # sched: [7:1.00] 894; SKYLAKE-NEXT: addw %dx, %di # sched: [1:0.25] 895; SKYLAKE-NEXT: addw %di, (%rsi) # sched: [7:1.00] 896; SKYLAKE-NEXT: addw (%rsi), %di # sched: [6:0.50] 897; SKYLAKE-NEXT: #NO_APP 898; SKYLAKE-NEXT: retq # sched: [7:1.00] 899; 900; SKX-LABEL: test_add_16: 901; SKX: # %bb.0: 902; SKX-NEXT: #APP 903; SKX-NEXT: addw $511, %ax # imm = 0x1FF 904; SKX-NEXT: # sched: [1:0.25] 905; SKX-NEXT: addw $511, %di # imm = 0x1FF 906; SKX-NEXT: # sched: [1:0.25] 907; SKX-NEXT: addw $511, (%rsi) # imm = 0x1FF 908; SKX-NEXT: # sched: [7:1.00] 909; SKX-NEXT: addw $7, %di # sched: [1:0.25] 910; SKX-NEXT: addw $7, (%rsi) # sched: [7:1.00] 911; SKX-NEXT: addw %dx, %di # sched: [1:0.25] 912; SKX-NEXT: addw %di, (%rsi) # sched: [7:1.00] 913; SKX-NEXT: addw (%rsi), %di # sched: [6:0.50] 914; SKX-NEXT: #NO_APP 915; SKX-NEXT: retq # sched: [7:1.00] 916; 917; BTVER2-LABEL: test_add_16: 918; BTVER2: # %bb.0: 919; BTVER2-NEXT: #APP 920; BTVER2-NEXT: addw $511, %ax # imm = 0x1FF 921; BTVER2-NEXT: # sched: [1:0.50] 922; BTVER2-NEXT: addw $511, %di # imm = 0x1FF 923; BTVER2-NEXT: # sched: [1:0.50] 924; BTVER2-NEXT: addw $511, (%rsi) # imm = 0x1FF 925; BTVER2-NEXT: # sched: [5:1.00] 926; BTVER2-NEXT: addw $7, %di # sched: [1:0.50] 927; BTVER2-NEXT: addw $7, (%rsi) # sched: [5:1.00] 928; BTVER2-NEXT: addw %dx, %di # sched: [1:0.50] 929; BTVER2-NEXT: addw %di, (%rsi) # sched: [5:1.00] 930; BTVER2-NEXT: addw (%rsi), %di # sched: [4:1.00] 931; BTVER2-NEXT: #NO_APP 932; BTVER2-NEXT: retq # sched: [4:1.00] 933; 934; ZNVER1-LABEL: test_add_16: 935; ZNVER1: # %bb.0: 936; ZNVER1-NEXT: #APP 937; ZNVER1-NEXT: addw $511, %ax # imm = 0x1FF 938; ZNVER1-NEXT: # sched: [1:0.25] 939; ZNVER1-NEXT: addw $511, %di # imm = 0x1FF 940; ZNVER1-NEXT: # sched: [1:0.25] 941; ZNVER1-NEXT: addw $511, (%rsi) # imm = 0x1FF 942; ZNVER1-NEXT: # sched: [5:0.50] 943; ZNVER1-NEXT: addw $7, %di # sched: [1:0.25] 944; ZNVER1-NEXT: addw $7, (%rsi) # sched: [5:0.50] 945; ZNVER1-NEXT: addw %dx, %di # sched: [1:0.25] 946; ZNVER1-NEXT: addw %di, (%rsi) # sched: [5:0.50] 947; ZNVER1-NEXT: addw (%rsi), %di # sched: [5:0.50] 948; ZNVER1-NEXT: #NO_APP 949; ZNVER1-NEXT: retq # sched: [1:0.50] 950 tail call void asm "addw $3, %AX \0A\09 addw $3, $0 \0A\09 addw $3, $2 \0A\09 addw $4, $0 \0A\09 addw $4, $2 \0A\09 addw $1, $0 \0A\09 addw $0, $2 \0A\09 addw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 951 ret void 952} 953define void @test_add_32(i32 %a0, i32* %a1, i32 %a2) optsize { 954; GENERIC-LABEL: test_add_32: 955; GENERIC: # %bb.0: 956; GENERIC-NEXT: #APP 957; GENERIC-NEXT: addl $665536, %eax # imm = 0xA27C0 958; GENERIC-NEXT: # sched: [1:0.33] 959; GENERIC-NEXT: addl $665536, %edi # imm = 0xA27C0 960; GENERIC-NEXT: # sched: [1:0.33] 961; GENERIC-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 962; GENERIC-NEXT: # sched: [7:1.00] 963; GENERIC-NEXT: addl $7, %edi # sched: [1:0.33] 964; GENERIC-NEXT: addl $7, (%rsi) # sched: [7:1.00] 965; GENERIC-NEXT: addl %edx, %edi # sched: [1:0.33] 966; GENERIC-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 967; GENERIC-NEXT: addl (%rsi), %edi # sched: [6:0.50] 968; GENERIC-NEXT: #NO_APP 969; GENERIC-NEXT: retq # sched: [1:1.00] 970; 971; ATOM-LABEL: test_add_32: 972; ATOM: # %bb.0: 973; ATOM-NEXT: #APP 974; ATOM-NEXT: addl $665536, %eax # imm = 0xA27C0 975; ATOM-NEXT: # sched: [1:0.50] 976; ATOM-NEXT: addl $665536, %edi # imm = 0xA27C0 977; ATOM-NEXT: # sched: [1:0.50] 978; ATOM-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 979; ATOM-NEXT: # sched: [1:1.00] 980; ATOM-NEXT: addl $7, %edi # sched: [1:0.50] 981; ATOM-NEXT: addl $7, (%rsi) # sched: [1:1.00] 982; ATOM-NEXT: addl %edx, %edi # sched: [1:0.50] 983; ATOM-NEXT: addl %edi, (%rsi) # sched: [1:1.00] 984; ATOM-NEXT: addl (%rsi), %edi # sched: [1:1.00] 985; ATOM-NEXT: #NO_APP 986; ATOM-NEXT: retq # sched: [79:39.50] 987; 988; SLM-LABEL: test_add_32: 989; SLM: # %bb.0: 990; SLM-NEXT: #APP 991; SLM-NEXT: addl $665536, %eax # imm = 0xA27C0 992; SLM-NEXT: # sched: [1:0.50] 993; SLM-NEXT: addl $665536, %edi # imm = 0xA27C0 994; SLM-NEXT: # sched: [1:0.50] 995; SLM-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 996; SLM-NEXT: # sched: [5:2.00] 997; SLM-NEXT: addl $7, %edi # sched: [1:0.50] 998; SLM-NEXT: addl $7, (%rsi) # sched: [5:2.00] 999; SLM-NEXT: addl %edx, %edi # sched: [1:0.50] 1000; SLM-NEXT: addl %edi, (%rsi) # sched: [5:2.00] 1001; SLM-NEXT: addl (%rsi), %edi # sched: [4:1.00] 1002; SLM-NEXT: #NO_APP 1003; SLM-NEXT: retq # sched: [4:1.00] 1004; 1005; SANDY-LABEL: test_add_32: 1006; SANDY: # %bb.0: 1007; SANDY-NEXT: #APP 1008; SANDY-NEXT: addl $665536, %eax # imm = 0xA27C0 1009; SANDY-NEXT: # sched: [1:0.33] 1010; SANDY-NEXT: addl $665536, %edi # imm = 0xA27C0 1011; SANDY-NEXT: # sched: [1:0.33] 1012; SANDY-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1013; SANDY-NEXT: # sched: [7:1.00] 1014; SANDY-NEXT: addl $7, %edi # sched: [1:0.33] 1015; SANDY-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1016; SANDY-NEXT: addl %edx, %edi # sched: [1:0.33] 1017; SANDY-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1018; SANDY-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1019; SANDY-NEXT: #NO_APP 1020; SANDY-NEXT: retq # sched: [1:1.00] 1021; 1022; HASWELL-LABEL: test_add_32: 1023; HASWELL: # %bb.0: 1024; HASWELL-NEXT: #APP 1025; HASWELL-NEXT: addl $665536, %eax # imm = 0xA27C0 1026; HASWELL-NEXT: # sched: [1:0.25] 1027; HASWELL-NEXT: addl $665536, %edi # imm = 0xA27C0 1028; HASWELL-NEXT: # sched: [1:0.25] 1029; HASWELL-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1030; HASWELL-NEXT: # sched: [7:1.00] 1031; HASWELL-NEXT: addl $7, %edi # sched: [1:0.25] 1032; HASWELL-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1033; HASWELL-NEXT: addl %edx, %edi # sched: [1:0.25] 1034; HASWELL-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1035; HASWELL-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1036; HASWELL-NEXT: #NO_APP 1037; HASWELL-NEXT: retq # sched: [7:1.00] 1038; 1039; BROADWELL-LABEL: test_add_32: 1040; BROADWELL: # %bb.0: 1041; BROADWELL-NEXT: #APP 1042; BROADWELL-NEXT: addl $665536, %eax # imm = 0xA27C0 1043; BROADWELL-NEXT: # sched: [1:0.25] 1044; BROADWELL-NEXT: addl $665536, %edi # imm = 0xA27C0 1045; BROADWELL-NEXT: # sched: [1:0.25] 1046; BROADWELL-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1047; BROADWELL-NEXT: # sched: [7:1.00] 1048; BROADWELL-NEXT: addl $7, %edi # sched: [1:0.25] 1049; BROADWELL-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1050; BROADWELL-NEXT: addl %edx, %edi # sched: [1:0.25] 1051; BROADWELL-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1052; BROADWELL-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1053; BROADWELL-NEXT: #NO_APP 1054; BROADWELL-NEXT: retq # sched: [7:1.00] 1055; 1056; SKYLAKE-LABEL: test_add_32: 1057; SKYLAKE: # %bb.0: 1058; SKYLAKE-NEXT: #APP 1059; SKYLAKE-NEXT: addl $665536, %eax # imm = 0xA27C0 1060; SKYLAKE-NEXT: # sched: [1:0.25] 1061; SKYLAKE-NEXT: addl $665536, %edi # imm = 0xA27C0 1062; SKYLAKE-NEXT: # sched: [1:0.25] 1063; SKYLAKE-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1064; SKYLAKE-NEXT: # sched: [7:1.00] 1065; SKYLAKE-NEXT: addl $7, %edi # sched: [1:0.25] 1066; SKYLAKE-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1067; SKYLAKE-NEXT: addl %edx, %edi # sched: [1:0.25] 1068; SKYLAKE-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1069; SKYLAKE-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1070; SKYLAKE-NEXT: #NO_APP 1071; SKYLAKE-NEXT: retq # sched: [7:1.00] 1072; 1073; SKX-LABEL: test_add_32: 1074; SKX: # %bb.0: 1075; SKX-NEXT: #APP 1076; SKX-NEXT: addl $665536, %eax # imm = 0xA27C0 1077; SKX-NEXT: # sched: [1:0.25] 1078; SKX-NEXT: addl $665536, %edi # imm = 0xA27C0 1079; SKX-NEXT: # sched: [1:0.25] 1080; SKX-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1081; SKX-NEXT: # sched: [7:1.00] 1082; SKX-NEXT: addl $7, %edi # sched: [1:0.25] 1083; SKX-NEXT: addl $7, (%rsi) # sched: [7:1.00] 1084; SKX-NEXT: addl %edx, %edi # sched: [1:0.25] 1085; SKX-NEXT: addl %edi, (%rsi) # sched: [7:1.00] 1086; SKX-NEXT: addl (%rsi), %edi # sched: [6:0.50] 1087; SKX-NEXT: #NO_APP 1088; SKX-NEXT: retq # sched: [7:1.00] 1089; 1090; BTVER2-LABEL: test_add_32: 1091; BTVER2: # %bb.0: 1092; BTVER2-NEXT: #APP 1093; BTVER2-NEXT: addl $665536, %eax # imm = 0xA27C0 1094; BTVER2-NEXT: # sched: [1:0.50] 1095; BTVER2-NEXT: addl $665536, %edi # imm = 0xA27C0 1096; BTVER2-NEXT: # sched: [1:0.50] 1097; BTVER2-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1098; BTVER2-NEXT: # sched: [5:1.00] 1099; BTVER2-NEXT: addl $7, %edi # sched: [1:0.50] 1100; BTVER2-NEXT: addl $7, (%rsi) # sched: [5:1.00] 1101; BTVER2-NEXT: addl %edx, %edi # sched: [1:0.50] 1102; BTVER2-NEXT: addl %edi, (%rsi) # sched: [5:1.00] 1103; BTVER2-NEXT: addl (%rsi), %edi # sched: [4:1.00] 1104; BTVER2-NEXT: #NO_APP 1105; BTVER2-NEXT: retq # sched: [4:1.00] 1106; 1107; ZNVER1-LABEL: test_add_32: 1108; ZNVER1: # %bb.0: 1109; ZNVER1-NEXT: #APP 1110; ZNVER1-NEXT: addl $665536, %eax # imm = 0xA27C0 1111; ZNVER1-NEXT: # sched: [1:0.25] 1112; ZNVER1-NEXT: addl $665536, %edi # imm = 0xA27C0 1113; ZNVER1-NEXT: # sched: [1:0.25] 1114; ZNVER1-NEXT: addl $665536, (%rsi) # imm = 0xA27C0 1115; ZNVER1-NEXT: # sched: [5:0.50] 1116; ZNVER1-NEXT: addl $7, %edi # sched: [1:0.25] 1117; ZNVER1-NEXT: addl $7, (%rsi) # sched: [5:0.50] 1118; ZNVER1-NEXT: addl %edx, %edi # sched: [1:0.25] 1119; ZNVER1-NEXT: addl %edi, (%rsi) # sched: [5:0.50] 1120; ZNVER1-NEXT: addl (%rsi), %edi # sched: [5:0.50] 1121; ZNVER1-NEXT: #NO_APP 1122; ZNVER1-NEXT: retq # sched: [1:0.50] 1123 tail call void asm "addl $3, %EAX \0A\09 addl $3, $0 \0A\09 addl $3, $2 \0A\09 addl $4, $0 \0A\09 addl $4, $2 \0A\09 addl $1, $0 \0A\09 addl $0, $2 \0A\09 addl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 1124 ret void 1125} 1126define void @test_add_64(i64 %a0, i64* %a1, i64 %a2) optsize { 1127; GENERIC-LABEL: test_add_64: 1128; GENERIC: # %bb.0: 1129; GENERIC-NEXT: #APP 1130; GENERIC-NEXT: addq $665536, %rax # imm = 0xA27C0 1131; GENERIC-NEXT: # sched: [1:0.33] 1132; GENERIC-NEXT: addq $665536, %rdi # imm = 0xA27C0 1133; GENERIC-NEXT: # sched: [1:0.33] 1134; GENERIC-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1135; GENERIC-NEXT: # sched: [7:1.00] 1136; GENERIC-NEXT: addq $7, %rdi # sched: [1:0.33] 1137; GENERIC-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1138; GENERIC-NEXT: addq %rdx, %rdi # sched: [1:0.33] 1139; GENERIC-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1140; GENERIC-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1141; GENERIC-NEXT: #NO_APP 1142; GENERIC-NEXT: retq # sched: [1:1.00] 1143; 1144; ATOM-LABEL: test_add_64: 1145; ATOM: # %bb.0: 1146; ATOM-NEXT: #APP 1147; ATOM-NEXT: addq $665536, %rax # imm = 0xA27C0 1148; ATOM-NEXT: # sched: [1:0.50] 1149; ATOM-NEXT: addq $665536, %rdi # imm = 0xA27C0 1150; ATOM-NEXT: # sched: [1:0.50] 1151; ATOM-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1152; ATOM-NEXT: # sched: [1:1.00] 1153; ATOM-NEXT: addq $7, %rdi # sched: [1:0.50] 1154; ATOM-NEXT: addq $7, (%rsi) # sched: [1:1.00] 1155; ATOM-NEXT: addq %rdx, %rdi # sched: [1:0.50] 1156; ATOM-NEXT: addq %rdi, (%rsi) # sched: [1:1.00] 1157; ATOM-NEXT: addq (%rsi), %rdi # sched: [1:1.00] 1158; ATOM-NEXT: #NO_APP 1159; ATOM-NEXT: retq # sched: [79:39.50] 1160; 1161; SLM-LABEL: test_add_64: 1162; SLM: # %bb.0: 1163; SLM-NEXT: #APP 1164; SLM-NEXT: addq $665536, %rax # imm = 0xA27C0 1165; SLM-NEXT: # sched: [1:0.50] 1166; SLM-NEXT: addq $665536, %rdi # imm = 0xA27C0 1167; SLM-NEXT: # sched: [1:0.50] 1168; SLM-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1169; SLM-NEXT: # sched: [5:2.00] 1170; SLM-NEXT: addq $7, %rdi # sched: [1:0.50] 1171; SLM-NEXT: addq $7, (%rsi) # sched: [5:2.00] 1172; SLM-NEXT: addq %rdx, %rdi # sched: [1:0.50] 1173; SLM-NEXT: addq %rdi, (%rsi) # sched: [5:2.00] 1174; SLM-NEXT: addq (%rsi), %rdi # sched: [4:1.00] 1175; SLM-NEXT: #NO_APP 1176; SLM-NEXT: retq # sched: [4:1.00] 1177; 1178; SANDY-LABEL: test_add_64: 1179; SANDY: # %bb.0: 1180; SANDY-NEXT: #APP 1181; SANDY-NEXT: addq $665536, %rax # imm = 0xA27C0 1182; SANDY-NEXT: # sched: [1:0.33] 1183; SANDY-NEXT: addq $665536, %rdi # imm = 0xA27C0 1184; SANDY-NEXT: # sched: [1:0.33] 1185; SANDY-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1186; SANDY-NEXT: # sched: [7:1.00] 1187; SANDY-NEXT: addq $7, %rdi # sched: [1:0.33] 1188; SANDY-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1189; SANDY-NEXT: addq %rdx, %rdi # sched: [1:0.33] 1190; SANDY-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1191; SANDY-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1192; SANDY-NEXT: #NO_APP 1193; SANDY-NEXT: retq # sched: [1:1.00] 1194; 1195; HASWELL-LABEL: test_add_64: 1196; HASWELL: # %bb.0: 1197; HASWELL-NEXT: #APP 1198; HASWELL-NEXT: addq $665536, %rax # imm = 0xA27C0 1199; HASWELL-NEXT: # sched: [1:0.25] 1200; HASWELL-NEXT: addq $665536, %rdi # imm = 0xA27C0 1201; HASWELL-NEXT: # sched: [1:0.25] 1202; HASWELL-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1203; HASWELL-NEXT: # sched: [7:1.00] 1204; HASWELL-NEXT: addq $7, %rdi # sched: [1:0.25] 1205; HASWELL-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1206; HASWELL-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1207; HASWELL-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1208; HASWELL-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1209; HASWELL-NEXT: #NO_APP 1210; HASWELL-NEXT: retq # sched: [7:1.00] 1211; 1212; BROADWELL-LABEL: test_add_64: 1213; BROADWELL: # %bb.0: 1214; BROADWELL-NEXT: #APP 1215; BROADWELL-NEXT: addq $665536, %rax # imm = 0xA27C0 1216; BROADWELL-NEXT: # sched: [1:0.25] 1217; BROADWELL-NEXT: addq $665536, %rdi # imm = 0xA27C0 1218; BROADWELL-NEXT: # sched: [1:0.25] 1219; BROADWELL-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1220; BROADWELL-NEXT: # sched: [7:1.00] 1221; BROADWELL-NEXT: addq $7, %rdi # sched: [1:0.25] 1222; BROADWELL-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1223; BROADWELL-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1224; BROADWELL-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1225; BROADWELL-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1226; BROADWELL-NEXT: #NO_APP 1227; BROADWELL-NEXT: retq # sched: [7:1.00] 1228; 1229; SKYLAKE-LABEL: test_add_64: 1230; SKYLAKE: # %bb.0: 1231; SKYLAKE-NEXT: #APP 1232; SKYLAKE-NEXT: addq $665536, %rax # imm = 0xA27C0 1233; SKYLAKE-NEXT: # sched: [1:0.25] 1234; SKYLAKE-NEXT: addq $665536, %rdi # imm = 0xA27C0 1235; SKYLAKE-NEXT: # sched: [1:0.25] 1236; SKYLAKE-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1237; SKYLAKE-NEXT: # sched: [7:1.00] 1238; SKYLAKE-NEXT: addq $7, %rdi # sched: [1:0.25] 1239; SKYLAKE-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1240; SKYLAKE-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1241; SKYLAKE-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1242; SKYLAKE-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1243; SKYLAKE-NEXT: #NO_APP 1244; SKYLAKE-NEXT: retq # sched: [7:1.00] 1245; 1246; SKX-LABEL: test_add_64: 1247; SKX: # %bb.0: 1248; SKX-NEXT: #APP 1249; SKX-NEXT: addq $665536, %rax # imm = 0xA27C0 1250; SKX-NEXT: # sched: [1:0.25] 1251; SKX-NEXT: addq $665536, %rdi # imm = 0xA27C0 1252; SKX-NEXT: # sched: [1:0.25] 1253; SKX-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1254; SKX-NEXT: # sched: [7:1.00] 1255; SKX-NEXT: addq $7, %rdi # sched: [1:0.25] 1256; SKX-NEXT: addq $7, (%rsi) # sched: [7:1.00] 1257; SKX-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1258; SKX-NEXT: addq %rdi, (%rsi) # sched: [7:1.00] 1259; SKX-NEXT: addq (%rsi), %rdi # sched: [6:0.50] 1260; SKX-NEXT: #NO_APP 1261; SKX-NEXT: retq # sched: [7:1.00] 1262; 1263; BTVER2-LABEL: test_add_64: 1264; BTVER2: # %bb.0: 1265; BTVER2-NEXT: #APP 1266; BTVER2-NEXT: addq $665536, %rax # imm = 0xA27C0 1267; BTVER2-NEXT: # sched: [1:0.50] 1268; BTVER2-NEXT: addq $665536, %rdi # imm = 0xA27C0 1269; BTVER2-NEXT: # sched: [1:0.50] 1270; BTVER2-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1271; BTVER2-NEXT: # sched: [5:1.00] 1272; BTVER2-NEXT: addq $7, %rdi # sched: [1:0.50] 1273; BTVER2-NEXT: addq $7, (%rsi) # sched: [5:1.00] 1274; BTVER2-NEXT: addq %rdx, %rdi # sched: [1:0.50] 1275; BTVER2-NEXT: addq %rdi, (%rsi) # sched: [5:1.00] 1276; BTVER2-NEXT: addq (%rsi), %rdi # sched: [4:1.00] 1277; BTVER2-NEXT: #NO_APP 1278; BTVER2-NEXT: retq # sched: [4:1.00] 1279; 1280; ZNVER1-LABEL: test_add_64: 1281; ZNVER1: # %bb.0: 1282; ZNVER1-NEXT: #APP 1283; ZNVER1-NEXT: addq $665536, %rax # imm = 0xA27C0 1284; ZNVER1-NEXT: # sched: [1:0.25] 1285; ZNVER1-NEXT: addq $665536, %rdi # imm = 0xA27C0 1286; ZNVER1-NEXT: # sched: [1:0.25] 1287; ZNVER1-NEXT: addq $665536, (%rsi) # imm = 0xA27C0 1288; ZNVER1-NEXT: # sched: [5:0.50] 1289; ZNVER1-NEXT: addq $7, %rdi # sched: [1:0.25] 1290; ZNVER1-NEXT: addq $7, (%rsi) # sched: [5:0.50] 1291; ZNVER1-NEXT: addq %rdx, %rdi # sched: [1:0.25] 1292; ZNVER1-NEXT: addq %rdi, (%rsi) # sched: [5:0.50] 1293; ZNVER1-NEXT: addq (%rsi), %rdi # sched: [5:0.50] 1294; ZNVER1-NEXT: #NO_APP 1295; ZNVER1-NEXT: retq # sched: [1:0.50] 1296 tail call void asm "addq $3, %RAX \0A\09 addq $3, $0 \0A\09 addq $3, $2 \0A\09 addq $4, $0 \0A\09 addq $4, $2 \0A\09 addq $1, $0 \0A\09 addq $0, $2 \0A\09 addq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 1297 ret void 1298} 1299 1300define void @test_and_8(i8 %a0, i8* %a1, i8 %a2) optsize { 1301; GENERIC-LABEL: test_and_8: 1302; GENERIC: # %bb.0: 1303; GENERIC-NEXT: #APP 1304; GENERIC-NEXT: andb $7, %al # sched: [1:0.33] 1305; GENERIC-NEXT: andb $7, %dil # sched: [1:0.33] 1306; GENERIC-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1307; GENERIC-NEXT: andb %dl, %dil # sched: [1:0.33] 1308; GENERIC-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1309; GENERIC-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1310; GENERIC-NEXT: #NO_APP 1311; GENERIC-NEXT: retq # sched: [1:1.00] 1312; 1313; ATOM-LABEL: test_and_8: 1314; ATOM: # %bb.0: 1315; ATOM-NEXT: #APP 1316; ATOM-NEXT: andb $7, %al # sched: [1:0.50] 1317; ATOM-NEXT: andb $7, %dil # sched: [1:0.50] 1318; ATOM-NEXT: andb $7, (%rsi) # sched: [1:1.00] 1319; ATOM-NEXT: andb %dl, %dil # sched: [1:0.50] 1320; ATOM-NEXT: andb %dil, (%rsi) # sched: [1:1.00] 1321; ATOM-NEXT: andb (%rsi), %dil # sched: [1:1.00] 1322; ATOM-NEXT: #NO_APP 1323; ATOM-NEXT: retq # sched: [79:39.50] 1324; 1325; SLM-LABEL: test_and_8: 1326; SLM: # %bb.0: 1327; SLM-NEXT: #APP 1328; SLM-NEXT: andb $7, %al # sched: [1:0.50] 1329; SLM-NEXT: andb $7, %dil # sched: [1:0.50] 1330; SLM-NEXT: andb $7, (%rsi) # sched: [5:2.00] 1331; SLM-NEXT: andb %dl, %dil # sched: [1:0.50] 1332; SLM-NEXT: andb %dil, (%rsi) # sched: [5:2.00] 1333; SLM-NEXT: andb (%rsi), %dil # sched: [4:1.00] 1334; SLM-NEXT: #NO_APP 1335; SLM-NEXT: retq # sched: [4:1.00] 1336; 1337; SANDY-LABEL: test_and_8: 1338; SANDY: # %bb.0: 1339; SANDY-NEXT: #APP 1340; SANDY-NEXT: andb $7, %al # sched: [1:0.33] 1341; SANDY-NEXT: andb $7, %dil # sched: [1:0.33] 1342; SANDY-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1343; SANDY-NEXT: andb %dl, %dil # sched: [1:0.33] 1344; SANDY-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1345; SANDY-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1346; SANDY-NEXT: #NO_APP 1347; SANDY-NEXT: retq # sched: [1:1.00] 1348; 1349; HASWELL-LABEL: test_and_8: 1350; HASWELL: # %bb.0: 1351; HASWELL-NEXT: #APP 1352; HASWELL-NEXT: andb $7, %al # sched: [1:0.25] 1353; HASWELL-NEXT: andb $7, %dil # sched: [1:0.25] 1354; HASWELL-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1355; HASWELL-NEXT: andb %dl, %dil # sched: [1:0.25] 1356; HASWELL-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1357; HASWELL-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1358; HASWELL-NEXT: #NO_APP 1359; HASWELL-NEXT: retq # sched: [7:1.00] 1360; 1361; BROADWELL-LABEL: test_and_8: 1362; BROADWELL: # %bb.0: 1363; BROADWELL-NEXT: #APP 1364; BROADWELL-NEXT: andb $7, %al # sched: [1:0.25] 1365; BROADWELL-NEXT: andb $7, %dil # sched: [1:0.25] 1366; BROADWELL-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1367; BROADWELL-NEXT: andb %dl, %dil # sched: [1:0.25] 1368; BROADWELL-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1369; BROADWELL-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1370; BROADWELL-NEXT: #NO_APP 1371; BROADWELL-NEXT: retq # sched: [7:1.00] 1372; 1373; SKYLAKE-LABEL: test_and_8: 1374; SKYLAKE: # %bb.0: 1375; SKYLAKE-NEXT: #APP 1376; SKYLAKE-NEXT: andb $7, %al # sched: [1:0.25] 1377; SKYLAKE-NEXT: andb $7, %dil # sched: [1:0.25] 1378; SKYLAKE-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1379; SKYLAKE-NEXT: andb %dl, %dil # sched: [1:0.25] 1380; SKYLAKE-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1381; SKYLAKE-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1382; SKYLAKE-NEXT: #NO_APP 1383; SKYLAKE-NEXT: retq # sched: [7:1.00] 1384; 1385; SKX-LABEL: test_and_8: 1386; SKX: # %bb.0: 1387; SKX-NEXT: #APP 1388; SKX-NEXT: andb $7, %al # sched: [1:0.25] 1389; SKX-NEXT: andb $7, %dil # sched: [1:0.25] 1390; SKX-NEXT: andb $7, (%rsi) # sched: [7:1.00] 1391; SKX-NEXT: andb %dl, %dil # sched: [1:0.25] 1392; SKX-NEXT: andb %dil, (%rsi) # sched: [7:1.00] 1393; SKX-NEXT: andb (%rsi), %dil # sched: [6:0.50] 1394; SKX-NEXT: #NO_APP 1395; SKX-NEXT: retq # sched: [7:1.00] 1396; 1397; BTVER2-LABEL: test_and_8: 1398; BTVER2: # %bb.0: 1399; BTVER2-NEXT: #APP 1400; BTVER2-NEXT: andb $7, %al # sched: [1:0.50] 1401; BTVER2-NEXT: andb $7, %dil # sched: [1:0.50] 1402; BTVER2-NEXT: andb $7, (%rsi) # sched: [5:1.00] 1403; BTVER2-NEXT: andb %dl, %dil # sched: [1:0.50] 1404; BTVER2-NEXT: andb %dil, (%rsi) # sched: [5:1.00] 1405; BTVER2-NEXT: andb (%rsi), %dil # sched: [4:1.00] 1406; BTVER2-NEXT: #NO_APP 1407; BTVER2-NEXT: retq # sched: [4:1.00] 1408; 1409; ZNVER1-LABEL: test_and_8: 1410; ZNVER1: # %bb.0: 1411; ZNVER1-NEXT: #APP 1412; ZNVER1-NEXT: andb $7, %al # sched: [1:0.25] 1413; ZNVER1-NEXT: andb $7, %dil # sched: [1:0.25] 1414; ZNVER1-NEXT: andb $7, (%rsi) # sched: [5:0.50] 1415; ZNVER1-NEXT: andb %dl, %dil # sched: [1:0.25] 1416; ZNVER1-NEXT: andb %dil, (%rsi) # sched: [5:0.50] 1417; ZNVER1-NEXT: andb (%rsi), %dil # sched: [5:0.50] 1418; ZNVER1-NEXT: #NO_APP 1419; ZNVER1-NEXT: retq # sched: [1:0.50] 1420 tail call void asm "andb $3, %AL \0A\09 andb $3, $0 \0A\09 andb $3, $2 \0A\09 andb $1, $0 \0A\09 andb $0, $2 \0A\09 andb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 1421 ret void 1422} 1423define void @test_and_16(i16 %a0, i16* %a1, i16 %a2) optsize { 1424; GENERIC-LABEL: test_and_16: 1425; GENERIC: # %bb.0: 1426; GENERIC-NEXT: #APP 1427; GENERIC-NEXT: andw $511, %ax # imm = 0x1FF 1428; GENERIC-NEXT: # sched: [1:0.33] 1429; GENERIC-NEXT: andw $511, %di # imm = 0x1FF 1430; GENERIC-NEXT: # sched: [1:0.33] 1431; GENERIC-NEXT: andw $511, (%rsi) # imm = 0x1FF 1432; GENERIC-NEXT: # sched: [7:1.00] 1433; GENERIC-NEXT: andw $7, %di # sched: [1:0.33] 1434; GENERIC-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1435; GENERIC-NEXT: andw %dx, %di # sched: [1:0.33] 1436; GENERIC-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1437; GENERIC-NEXT: andw (%rsi), %di # sched: [6:0.50] 1438; GENERIC-NEXT: #NO_APP 1439; GENERIC-NEXT: retq # sched: [1:1.00] 1440; 1441; ATOM-LABEL: test_and_16: 1442; ATOM: # %bb.0: 1443; ATOM-NEXT: #APP 1444; ATOM-NEXT: andw $511, %ax # imm = 0x1FF 1445; ATOM-NEXT: # sched: [1:0.50] 1446; ATOM-NEXT: andw $511, %di # imm = 0x1FF 1447; ATOM-NEXT: # sched: [1:0.50] 1448; ATOM-NEXT: andw $511, (%rsi) # imm = 0x1FF 1449; ATOM-NEXT: # sched: [1:1.00] 1450; ATOM-NEXT: andw $7, %di # sched: [1:0.50] 1451; ATOM-NEXT: andw $7, (%rsi) # sched: [1:1.00] 1452; ATOM-NEXT: andw %dx, %di # sched: [1:0.50] 1453; ATOM-NEXT: andw %di, (%rsi) # sched: [1:1.00] 1454; ATOM-NEXT: andw (%rsi), %di # sched: [1:1.00] 1455; ATOM-NEXT: #NO_APP 1456; ATOM-NEXT: retq # sched: [79:39.50] 1457; 1458; SLM-LABEL: test_and_16: 1459; SLM: # %bb.0: 1460; SLM-NEXT: #APP 1461; SLM-NEXT: andw $511, %ax # imm = 0x1FF 1462; SLM-NEXT: # sched: [1:0.50] 1463; SLM-NEXT: andw $511, %di # imm = 0x1FF 1464; SLM-NEXT: # sched: [1:0.50] 1465; SLM-NEXT: andw $511, (%rsi) # imm = 0x1FF 1466; SLM-NEXT: # sched: [5:2.00] 1467; SLM-NEXT: andw $7, %di # sched: [1:0.50] 1468; SLM-NEXT: andw $7, (%rsi) # sched: [5:2.00] 1469; SLM-NEXT: andw %dx, %di # sched: [1:0.50] 1470; SLM-NEXT: andw %di, (%rsi) # sched: [5:2.00] 1471; SLM-NEXT: andw (%rsi), %di # sched: [4:1.00] 1472; SLM-NEXT: #NO_APP 1473; SLM-NEXT: retq # sched: [4:1.00] 1474; 1475; SANDY-LABEL: test_and_16: 1476; SANDY: # %bb.0: 1477; SANDY-NEXT: #APP 1478; SANDY-NEXT: andw $511, %ax # imm = 0x1FF 1479; SANDY-NEXT: # sched: [1:0.33] 1480; SANDY-NEXT: andw $511, %di # imm = 0x1FF 1481; SANDY-NEXT: # sched: [1:0.33] 1482; SANDY-NEXT: andw $511, (%rsi) # imm = 0x1FF 1483; SANDY-NEXT: # sched: [7:1.00] 1484; SANDY-NEXT: andw $7, %di # sched: [1:0.33] 1485; SANDY-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1486; SANDY-NEXT: andw %dx, %di # sched: [1:0.33] 1487; SANDY-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1488; SANDY-NEXT: andw (%rsi), %di # sched: [6:0.50] 1489; SANDY-NEXT: #NO_APP 1490; SANDY-NEXT: retq # sched: [1:1.00] 1491; 1492; HASWELL-LABEL: test_and_16: 1493; HASWELL: # %bb.0: 1494; HASWELL-NEXT: #APP 1495; HASWELL-NEXT: andw $511, %ax # imm = 0x1FF 1496; HASWELL-NEXT: # sched: [1:0.25] 1497; HASWELL-NEXT: andw $511, %di # imm = 0x1FF 1498; HASWELL-NEXT: # sched: [1:0.25] 1499; HASWELL-NEXT: andw $511, (%rsi) # imm = 0x1FF 1500; HASWELL-NEXT: # sched: [7:1.00] 1501; HASWELL-NEXT: andw $7, %di # sched: [1:0.25] 1502; HASWELL-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1503; HASWELL-NEXT: andw %dx, %di # sched: [1:0.25] 1504; HASWELL-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1505; HASWELL-NEXT: andw (%rsi), %di # sched: [6:0.50] 1506; HASWELL-NEXT: #NO_APP 1507; HASWELL-NEXT: retq # sched: [7:1.00] 1508; 1509; BROADWELL-LABEL: test_and_16: 1510; BROADWELL: # %bb.0: 1511; BROADWELL-NEXT: #APP 1512; BROADWELL-NEXT: andw $511, %ax # imm = 0x1FF 1513; BROADWELL-NEXT: # sched: [1:0.25] 1514; BROADWELL-NEXT: andw $511, %di # imm = 0x1FF 1515; BROADWELL-NEXT: # sched: [1:0.25] 1516; BROADWELL-NEXT: andw $511, (%rsi) # imm = 0x1FF 1517; BROADWELL-NEXT: # sched: [7:1.00] 1518; BROADWELL-NEXT: andw $7, %di # sched: [1:0.25] 1519; BROADWELL-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1520; BROADWELL-NEXT: andw %dx, %di # sched: [1:0.25] 1521; BROADWELL-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1522; BROADWELL-NEXT: andw (%rsi), %di # sched: [6:0.50] 1523; BROADWELL-NEXT: #NO_APP 1524; BROADWELL-NEXT: retq # sched: [7:1.00] 1525; 1526; SKYLAKE-LABEL: test_and_16: 1527; SKYLAKE: # %bb.0: 1528; SKYLAKE-NEXT: #APP 1529; SKYLAKE-NEXT: andw $511, %ax # imm = 0x1FF 1530; SKYLAKE-NEXT: # sched: [1:0.25] 1531; SKYLAKE-NEXT: andw $511, %di # imm = 0x1FF 1532; SKYLAKE-NEXT: # sched: [1:0.25] 1533; SKYLAKE-NEXT: andw $511, (%rsi) # imm = 0x1FF 1534; SKYLAKE-NEXT: # sched: [7:1.00] 1535; SKYLAKE-NEXT: andw $7, %di # sched: [1:0.25] 1536; SKYLAKE-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1537; SKYLAKE-NEXT: andw %dx, %di # sched: [1:0.25] 1538; SKYLAKE-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1539; SKYLAKE-NEXT: andw (%rsi), %di # sched: [6:0.50] 1540; SKYLAKE-NEXT: #NO_APP 1541; SKYLAKE-NEXT: retq # sched: [7:1.00] 1542; 1543; SKX-LABEL: test_and_16: 1544; SKX: # %bb.0: 1545; SKX-NEXT: #APP 1546; SKX-NEXT: andw $511, %ax # imm = 0x1FF 1547; SKX-NEXT: # sched: [1:0.25] 1548; SKX-NEXT: andw $511, %di # imm = 0x1FF 1549; SKX-NEXT: # sched: [1:0.25] 1550; SKX-NEXT: andw $511, (%rsi) # imm = 0x1FF 1551; SKX-NEXT: # sched: [7:1.00] 1552; SKX-NEXT: andw $7, %di # sched: [1:0.25] 1553; SKX-NEXT: andw $7, (%rsi) # sched: [7:1.00] 1554; SKX-NEXT: andw %dx, %di # sched: [1:0.25] 1555; SKX-NEXT: andw %di, (%rsi) # sched: [7:1.00] 1556; SKX-NEXT: andw (%rsi), %di # sched: [6:0.50] 1557; SKX-NEXT: #NO_APP 1558; SKX-NEXT: retq # sched: [7:1.00] 1559; 1560; BTVER2-LABEL: test_and_16: 1561; BTVER2: # %bb.0: 1562; BTVER2-NEXT: #APP 1563; BTVER2-NEXT: andw $511, %ax # imm = 0x1FF 1564; BTVER2-NEXT: # sched: [1:0.50] 1565; BTVER2-NEXT: andw $511, %di # imm = 0x1FF 1566; BTVER2-NEXT: # sched: [1:0.50] 1567; BTVER2-NEXT: andw $511, (%rsi) # imm = 0x1FF 1568; BTVER2-NEXT: # sched: [5:1.00] 1569; BTVER2-NEXT: andw $7, %di # sched: [1:0.50] 1570; BTVER2-NEXT: andw $7, (%rsi) # sched: [5:1.00] 1571; BTVER2-NEXT: andw %dx, %di # sched: [1:0.50] 1572; BTVER2-NEXT: andw %di, (%rsi) # sched: [5:1.00] 1573; BTVER2-NEXT: andw (%rsi), %di # sched: [4:1.00] 1574; BTVER2-NEXT: #NO_APP 1575; BTVER2-NEXT: retq # sched: [4:1.00] 1576; 1577; ZNVER1-LABEL: test_and_16: 1578; ZNVER1: # %bb.0: 1579; ZNVER1-NEXT: #APP 1580; ZNVER1-NEXT: andw $511, %ax # imm = 0x1FF 1581; ZNVER1-NEXT: # sched: [1:0.25] 1582; ZNVER1-NEXT: andw $511, %di # imm = 0x1FF 1583; ZNVER1-NEXT: # sched: [1:0.25] 1584; ZNVER1-NEXT: andw $511, (%rsi) # imm = 0x1FF 1585; ZNVER1-NEXT: # sched: [5:0.50] 1586; ZNVER1-NEXT: andw $7, %di # sched: [1:0.25] 1587; ZNVER1-NEXT: andw $7, (%rsi) # sched: [5:0.50] 1588; ZNVER1-NEXT: andw %dx, %di # sched: [1:0.25] 1589; ZNVER1-NEXT: andw %di, (%rsi) # sched: [5:0.50] 1590; ZNVER1-NEXT: andw (%rsi), %di # sched: [5:0.50] 1591; ZNVER1-NEXT: #NO_APP 1592; ZNVER1-NEXT: retq # sched: [1:0.50] 1593 tail call void asm "andw $3, %AX \0A\09 andw $3, $0 \0A\09 andw $3, $2 \0A\09 andw $4, $0 \0A\09 andw $4, $2 \0A\09 andw $1, $0 \0A\09 andw $0, $2 \0A\09 andw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 1594 ret void 1595} 1596define void @test_and_32(i32 %a0, i32* %a1, i32 %a2) optsize { 1597; GENERIC-LABEL: test_and_32: 1598; GENERIC: # %bb.0: 1599; GENERIC-NEXT: #APP 1600; GENERIC-NEXT: andl $665536, %eax # imm = 0xA27C0 1601; GENERIC-NEXT: # sched: [1:0.33] 1602; GENERIC-NEXT: andl $665536, %edi # imm = 0xA27C0 1603; GENERIC-NEXT: # sched: [1:0.33] 1604; GENERIC-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1605; GENERIC-NEXT: # sched: [7:1.00] 1606; GENERIC-NEXT: andl $7, %edi # sched: [1:0.33] 1607; GENERIC-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1608; GENERIC-NEXT: andl %edx, %edi # sched: [1:0.33] 1609; GENERIC-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1610; GENERIC-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1611; GENERIC-NEXT: #NO_APP 1612; GENERIC-NEXT: retq # sched: [1:1.00] 1613; 1614; ATOM-LABEL: test_and_32: 1615; ATOM: # %bb.0: 1616; ATOM-NEXT: #APP 1617; ATOM-NEXT: andl $665536, %eax # imm = 0xA27C0 1618; ATOM-NEXT: # sched: [1:0.50] 1619; ATOM-NEXT: andl $665536, %edi # imm = 0xA27C0 1620; ATOM-NEXT: # sched: [1:0.50] 1621; ATOM-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1622; ATOM-NEXT: # sched: [1:1.00] 1623; ATOM-NEXT: andl $7, %edi # sched: [1:0.50] 1624; ATOM-NEXT: andl $7, (%rsi) # sched: [1:1.00] 1625; ATOM-NEXT: andl %edx, %edi # sched: [1:0.50] 1626; ATOM-NEXT: andl %edi, (%rsi) # sched: [1:1.00] 1627; ATOM-NEXT: andl (%rsi), %edi # sched: [1:1.00] 1628; ATOM-NEXT: #NO_APP 1629; ATOM-NEXT: retq # sched: [79:39.50] 1630; 1631; SLM-LABEL: test_and_32: 1632; SLM: # %bb.0: 1633; SLM-NEXT: #APP 1634; SLM-NEXT: andl $665536, %eax # imm = 0xA27C0 1635; SLM-NEXT: # sched: [1:0.50] 1636; SLM-NEXT: andl $665536, %edi # imm = 0xA27C0 1637; SLM-NEXT: # sched: [1:0.50] 1638; SLM-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1639; SLM-NEXT: # sched: [5:2.00] 1640; SLM-NEXT: andl $7, %edi # sched: [1:0.50] 1641; SLM-NEXT: andl $7, (%rsi) # sched: [5:2.00] 1642; SLM-NEXT: andl %edx, %edi # sched: [1:0.50] 1643; SLM-NEXT: andl %edi, (%rsi) # sched: [5:2.00] 1644; SLM-NEXT: andl (%rsi), %edi # sched: [4:1.00] 1645; SLM-NEXT: #NO_APP 1646; SLM-NEXT: retq # sched: [4:1.00] 1647; 1648; SANDY-LABEL: test_and_32: 1649; SANDY: # %bb.0: 1650; SANDY-NEXT: #APP 1651; SANDY-NEXT: andl $665536, %eax # imm = 0xA27C0 1652; SANDY-NEXT: # sched: [1:0.33] 1653; SANDY-NEXT: andl $665536, %edi # imm = 0xA27C0 1654; SANDY-NEXT: # sched: [1:0.33] 1655; SANDY-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1656; SANDY-NEXT: # sched: [7:1.00] 1657; SANDY-NEXT: andl $7, %edi # sched: [1:0.33] 1658; SANDY-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1659; SANDY-NEXT: andl %edx, %edi # sched: [1:0.33] 1660; SANDY-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1661; SANDY-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1662; SANDY-NEXT: #NO_APP 1663; SANDY-NEXT: retq # sched: [1:1.00] 1664; 1665; HASWELL-LABEL: test_and_32: 1666; HASWELL: # %bb.0: 1667; HASWELL-NEXT: #APP 1668; HASWELL-NEXT: andl $665536, %eax # imm = 0xA27C0 1669; HASWELL-NEXT: # sched: [1:0.25] 1670; HASWELL-NEXT: andl $665536, %edi # imm = 0xA27C0 1671; HASWELL-NEXT: # sched: [1:0.25] 1672; HASWELL-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1673; HASWELL-NEXT: # sched: [7:1.00] 1674; HASWELL-NEXT: andl $7, %edi # sched: [1:0.25] 1675; HASWELL-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1676; HASWELL-NEXT: andl %edx, %edi # sched: [1:0.25] 1677; HASWELL-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1678; HASWELL-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1679; HASWELL-NEXT: #NO_APP 1680; HASWELL-NEXT: retq # sched: [7:1.00] 1681; 1682; BROADWELL-LABEL: test_and_32: 1683; BROADWELL: # %bb.0: 1684; BROADWELL-NEXT: #APP 1685; BROADWELL-NEXT: andl $665536, %eax # imm = 0xA27C0 1686; BROADWELL-NEXT: # sched: [1:0.25] 1687; BROADWELL-NEXT: andl $665536, %edi # imm = 0xA27C0 1688; BROADWELL-NEXT: # sched: [1:0.25] 1689; BROADWELL-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1690; BROADWELL-NEXT: # sched: [7:1.00] 1691; BROADWELL-NEXT: andl $7, %edi # sched: [1:0.25] 1692; BROADWELL-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1693; BROADWELL-NEXT: andl %edx, %edi # sched: [1:0.25] 1694; BROADWELL-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1695; BROADWELL-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1696; BROADWELL-NEXT: #NO_APP 1697; BROADWELL-NEXT: retq # sched: [7:1.00] 1698; 1699; SKYLAKE-LABEL: test_and_32: 1700; SKYLAKE: # %bb.0: 1701; SKYLAKE-NEXT: #APP 1702; SKYLAKE-NEXT: andl $665536, %eax # imm = 0xA27C0 1703; SKYLAKE-NEXT: # sched: [1:0.25] 1704; SKYLAKE-NEXT: andl $665536, %edi # imm = 0xA27C0 1705; SKYLAKE-NEXT: # sched: [1:0.25] 1706; SKYLAKE-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1707; SKYLAKE-NEXT: # sched: [7:1.00] 1708; SKYLAKE-NEXT: andl $7, %edi # sched: [1:0.25] 1709; SKYLAKE-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1710; SKYLAKE-NEXT: andl %edx, %edi # sched: [1:0.25] 1711; SKYLAKE-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1712; SKYLAKE-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1713; SKYLAKE-NEXT: #NO_APP 1714; SKYLAKE-NEXT: retq # sched: [7:1.00] 1715; 1716; SKX-LABEL: test_and_32: 1717; SKX: # %bb.0: 1718; SKX-NEXT: #APP 1719; SKX-NEXT: andl $665536, %eax # imm = 0xA27C0 1720; SKX-NEXT: # sched: [1:0.25] 1721; SKX-NEXT: andl $665536, %edi # imm = 0xA27C0 1722; SKX-NEXT: # sched: [1:0.25] 1723; SKX-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1724; SKX-NEXT: # sched: [7:1.00] 1725; SKX-NEXT: andl $7, %edi # sched: [1:0.25] 1726; SKX-NEXT: andl $7, (%rsi) # sched: [7:1.00] 1727; SKX-NEXT: andl %edx, %edi # sched: [1:0.25] 1728; SKX-NEXT: andl %edi, (%rsi) # sched: [7:1.00] 1729; SKX-NEXT: andl (%rsi), %edi # sched: [6:0.50] 1730; SKX-NEXT: #NO_APP 1731; SKX-NEXT: retq # sched: [7:1.00] 1732; 1733; BTVER2-LABEL: test_and_32: 1734; BTVER2: # %bb.0: 1735; BTVER2-NEXT: #APP 1736; BTVER2-NEXT: andl $665536, %eax # imm = 0xA27C0 1737; BTVER2-NEXT: # sched: [1:0.50] 1738; BTVER2-NEXT: andl $665536, %edi # imm = 0xA27C0 1739; BTVER2-NEXT: # sched: [1:0.50] 1740; BTVER2-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1741; BTVER2-NEXT: # sched: [5:1.00] 1742; BTVER2-NEXT: andl $7, %edi # sched: [1:0.50] 1743; BTVER2-NEXT: andl $7, (%rsi) # sched: [5:1.00] 1744; BTVER2-NEXT: andl %edx, %edi # sched: [1:0.50] 1745; BTVER2-NEXT: andl %edi, (%rsi) # sched: [5:1.00] 1746; BTVER2-NEXT: andl (%rsi), %edi # sched: [4:1.00] 1747; BTVER2-NEXT: #NO_APP 1748; BTVER2-NEXT: retq # sched: [4:1.00] 1749; 1750; ZNVER1-LABEL: test_and_32: 1751; ZNVER1: # %bb.0: 1752; ZNVER1-NEXT: #APP 1753; ZNVER1-NEXT: andl $665536, %eax # imm = 0xA27C0 1754; ZNVER1-NEXT: # sched: [1:0.25] 1755; ZNVER1-NEXT: andl $665536, %edi # imm = 0xA27C0 1756; ZNVER1-NEXT: # sched: [1:0.25] 1757; ZNVER1-NEXT: andl $665536, (%rsi) # imm = 0xA27C0 1758; ZNVER1-NEXT: # sched: [5:0.50] 1759; ZNVER1-NEXT: andl $7, %edi # sched: [1:0.25] 1760; ZNVER1-NEXT: andl $7, (%rsi) # sched: [5:0.50] 1761; ZNVER1-NEXT: andl %edx, %edi # sched: [1:0.25] 1762; ZNVER1-NEXT: andl %edi, (%rsi) # sched: [5:0.50] 1763; ZNVER1-NEXT: andl (%rsi), %edi # sched: [5:0.50] 1764; ZNVER1-NEXT: #NO_APP 1765; ZNVER1-NEXT: retq # sched: [1:0.50] 1766 tail call void asm "andl $3, %EAX \0A\09 andl $3, $0 \0A\09 andl $3, $2 \0A\09 andl $4, $0 \0A\09 andl $4, $2 \0A\09 andl $1, $0 \0A\09 andl $0, $2 \0A\09 andl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 1767 ret void 1768} 1769define void @test_and_64(i64 %a0, i64* %a1, i64 %a2) optsize { 1770; GENERIC-LABEL: test_and_64: 1771; GENERIC: # %bb.0: 1772; GENERIC-NEXT: #APP 1773; GENERIC-NEXT: andq $665536, %rax # imm = 0xA27C0 1774; GENERIC-NEXT: # sched: [1:0.33] 1775; GENERIC-NEXT: andq $665536, %rdi # imm = 0xA27C0 1776; GENERIC-NEXT: # sched: [1:0.33] 1777; GENERIC-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1778; GENERIC-NEXT: # sched: [7:1.00] 1779; GENERIC-NEXT: andq $7, %rdi # sched: [1:0.33] 1780; GENERIC-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1781; GENERIC-NEXT: andq %rdx, %rdi # sched: [1:0.33] 1782; GENERIC-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1783; GENERIC-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1784; GENERIC-NEXT: #NO_APP 1785; GENERIC-NEXT: retq # sched: [1:1.00] 1786; 1787; ATOM-LABEL: test_and_64: 1788; ATOM: # %bb.0: 1789; ATOM-NEXT: #APP 1790; ATOM-NEXT: andq $665536, %rax # imm = 0xA27C0 1791; ATOM-NEXT: # sched: [1:0.50] 1792; ATOM-NEXT: andq $665536, %rdi # imm = 0xA27C0 1793; ATOM-NEXT: # sched: [1:0.50] 1794; ATOM-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1795; ATOM-NEXT: # sched: [1:1.00] 1796; ATOM-NEXT: andq $7, %rdi # sched: [1:0.50] 1797; ATOM-NEXT: andq $7, (%rsi) # sched: [1:1.00] 1798; ATOM-NEXT: andq %rdx, %rdi # sched: [1:0.50] 1799; ATOM-NEXT: andq %rdi, (%rsi) # sched: [1:1.00] 1800; ATOM-NEXT: andq (%rsi), %rdi # sched: [1:1.00] 1801; ATOM-NEXT: #NO_APP 1802; ATOM-NEXT: retq # sched: [79:39.50] 1803; 1804; SLM-LABEL: test_and_64: 1805; SLM: # %bb.0: 1806; SLM-NEXT: #APP 1807; SLM-NEXT: andq $665536, %rax # imm = 0xA27C0 1808; SLM-NEXT: # sched: [1:0.50] 1809; SLM-NEXT: andq $665536, %rdi # imm = 0xA27C0 1810; SLM-NEXT: # sched: [1:0.50] 1811; SLM-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1812; SLM-NEXT: # sched: [5:2.00] 1813; SLM-NEXT: andq $7, %rdi # sched: [1:0.50] 1814; SLM-NEXT: andq $7, (%rsi) # sched: [5:2.00] 1815; SLM-NEXT: andq %rdx, %rdi # sched: [1:0.50] 1816; SLM-NEXT: andq %rdi, (%rsi) # sched: [5:2.00] 1817; SLM-NEXT: andq (%rsi), %rdi # sched: [4:1.00] 1818; SLM-NEXT: #NO_APP 1819; SLM-NEXT: retq # sched: [4:1.00] 1820; 1821; SANDY-LABEL: test_and_64: 1822; SANDY: # %bb.0: 1823; SANDY-NEXT: #APP 1824; SANDY-NEXT: andq $665536, %rax # imm = 0xA27C0 1825; SANDY-NEXT: # sched: [1:0.33] 1826; SANDY-NEXT: andq $665536, %rdi # imm = 0xA27C0 1827; SANDY-NEXT: # sched: [1:0.33] 1828; SANDY-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1829; SANDY-NEXT: # sched: [7:1.00] 1830; SANDY-NEXT: andq $7, %rdi # sched: [1:0.33] 1831; SANDY-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1832; SANDY-NEXT: andq %rdx, %rdi # sched: [1:0.33] 1833; SANDY-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1834; SANDY-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1835; SANDY-NEXT: #NO_APP 1836; SANDY-NEXT: retq # sched: [1:1.00] 1837; 1838; HASWELL-LABEL: test_and_64: 1839; HASWELL: # %bb.0: 1840; HASWELL-NEXT: #APP 1841; HASWELL-NEXT: andq $665536, %rax # imm = 0xA27C0 1842; HASWELL-NEXT: # sched: [1:0.25] 1843; HASWELL-NEXT: andq $665536, %rdi # imm = 0xA27C0 1844; HASWELL-NEXT: # sched: [1:0.25] 1845; HASWELL-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1846; HASWELL-NEXT: # sched: [7:1.00] 1847; HASWELL-NEXT: andq $7, %rdi # sched: [1:0.25] 1848; HASWELL-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1849; HASWELL-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1850; HASWELL-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1851; HASWELL-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1852; HASWELL-NEXT: #NO_APP 1853; HASWELL-NEXT: retq # sched: [7:1.00] 1854; 1855; BROADWELL-LABEL: test_and_64: 1856; BROADWELL: # %bb.0: 1857; BROADWELL-NEXT: #APP 1858; BROADWELL-NEXT: andq $665536, %rax # imm = 0xA27C0 1859; BROADWELL-NEXT: # sched: [1:0.25] 1860; BROADWELL-NEXT: andq $665536, %rdi # imm = 0xA27C0 1861; BROADWELL-NEXT: # sched: [1:0.25] 1862; BROADWELL-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1863; BROADWELL-NEXT: # sched: [7:1.00] 1864; BROADWELL-NEXT: andq $7, %rdi # sched: [1:0.25] 1865; BROADWELL-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1866; BROADWELL-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1867; BROADWELL-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1868; BROADWELL-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1869; BROADWELL-NEXT: #NO_APP 1870; BROADWELL-NEXT: retq # sched: [7:1.00] 1871; 1872; SKYLAKE-LABEL: test_and_64: 1873; SKYLAKE: # %bb.0: 1874; SKYLAKE-NEXT: #APP 1875; SKYLAKE-NEXT: andq $665536, %rax # imm = 0xA27C0 1876; SKYLAKE-NEXT: # sched: [1:0.25] 1877; SKYLAKE-NEXT: andq $665536, %rdi # imm = 0xA27C0 1878; SKYLAKE-NEXT: # sched: [1:0.25] 1879; SKYLAKE-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1880; SKYLAKE-NEXT: # sched: [7:1.00] 1881; SKYLAKE-NEXT: andq $7, %rdi # sched: [1:0.25] 1882; SKYLAKE-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1883; SKYLAKE-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1884; SKYLAKE-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1885; SKYLAKE-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1886; SKYLAKE-NEXT: #NO_APP 1887; SKYLAKE-NEXT: retq # sched: [7:1.00] 1888; 1889; SKX-LABEL: test_and_64: 1890; SKX: # %bb.0: 1891; SKX-NEXT: #APP 1892; SKX-NEXT: andq $665536, %rax # imm = 0xA27C0 1893; SKX-NEXT: # sched: [1:0.25] 1894; SKX-NEXT: andq $665536, %rdi # imm = 0xA27C0 1895; SKX-NEXT: # sched: [1:0.25] 1896; SKX-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1897; SKX-NEXT: # sched: [7:1.00] 1898; SKX-NEXT: andq $7, %rdi # sched: [1:0.25] 1899; SKX-NEXT: andq $7, (%rsi) # sched: [7:1.00] 1900; SKX-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1901; SKX-NEXT: andq %rdi, (%rsi) # sched: [7:1.00] 1902; SKX-NEXT: andq (%rsi), %rdi # sched: [6:0.50] 1903; SKX-NEXT: #NO_APP 1904; SKX-NEXT: retq # sched: [7:1.00] 1905; 1906; BTVER2-LABEL: test_and_64: 1907; BTVER2: # %bb.0: 1908; BTVER2-NEXT: #APP 1909; BTVER2-NEXT: andq $665536, %rax # imm = 0xA27C0 1910; BTVER2-NEXT: # sched: [1:0.50] 1911; BTVER2-NEXT: andq $665536, %rdi # imm = 0xA27C0 1912; BTVER2-NEXT: # sched: [1:0.50] 1913; BTVER2-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1914; BTVER2-NEXT: # sched: [5:1.00] 1915; BTVER2-NEXT: andq $7, %rdi # sched: [1:0.50] 1916; BTVER2-NEXT: andq $7, (%rsi) # sched: [5:1.00] 1917; BTVER2-NEXT: andq %rdx, %rdi # sched: [1:0.50] 1918; BTVER2-NEXT: andq %rdi, (%rsi) # sched: [5:1.00] 1919; BTVER2-NEXT: andq (%rsi), %rdi # sched: [4:1.00] 1920; BTVER2-NEXT: #NO_APP 1921; BTVER2-NEXT: retq # sched: [4:1.00] 1922; 1923; ZNVER1-LABEL: test_and_64: 1924; ZNVER1: # %bb.0: 1925; ZNVER1-NEXT: #APP 1926; ZNVER1-NEXT: andq $665536, %rax # imm = 0xA27C0 1927; ZNVER1-NEXT: # sched: [1:0.25] 1928; ZNVER1-NEXT: andq $665536, %rdi # imm = 0xA27C0 1929; ZNVER1-NEXT: # sched: [1:0.25] 1930; ZNVER1-NEXT: andq $665536, (%rsi) # imm = 0xA27C0 1931; ZNVER1-NEXT: # sched: [5:0.50] 1932; ZNVER1-NEXT: andq $7, %rdi # sched: [1:0.25] 1933; ZNVER1-NEXT: andq $7, (%rsi) # sched: [5:0.50] 1934; ZNVER1-NEXT: andq %rdx, %rdi # sched: [1:0.25] 1935; ZNVER1-NEXT: andq %rdi, (%rsi) # sched: [5:0.50] 1936; ZNVER1-NEXT: andq (%rsi), %rdi # sched: [5:0.50] 1937; ZNVER1-NEXT: #NO_APP 1938; ZNVER1-NEXT: retq # sched: [1:0.50] 1939 tail call void asm "andq $3, %RAX \0A\09 andq $3, $0 \0A\09 andq $3, $2 \0A\09 andq $4, $0 \0A\09 andq $4, $2 \0A\09 andq $1, $0 \0A\09 andq $0, $2 \0A\09 andq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 1940 ret void 1941} 1942 1943define i16 @test_bsf16(i16 %a0, i16* %a1) optsize { 1944; GENERIC-LABEL: test_bsf16: 1945; GENERIC: # %bb.0: 1946; GENERIC-NEXT: #APP 1947; GENERIC-NEXT: bsfw %di, %ax # sched: [3:1.00] 1948; GENERIC-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 1949; GENERIC-NEXT: #NO_APP 1950; GENERIC-NEXT: orl %ecx, %eax # sched: [1:0.33] 1951; GENERIC-NEXT: # kill: def $ax killed $ax killed $eax 1952; GENERIC-NEXT: retq # sched: [1:1.00] 1953; 1954; ATOM-LABEL: test_bsf16: 1955; ATOM: # %bb.0: 1956; ATOM-NEXT: #APP 1957; ATOM-NEXT: bsfw %di, %ax # sched: [16:8.00] 1958; ATOM-NEXT: bsfw (%rsi), %cx # sched: [16:8.00] 1959; ATOM-NEXT: #NO_APP 1960; ATOM-NEXT: orl %ecx, %eax # sched: [1:0.50] 1961; ATOM-NEXT: # kill: def $ax killed $ax killed $eax 1962; ATOM-NEXT: retq # sched: [79:39.50] 1963; 1964; SLM-LABEL: test_bsf16: 1965; SLM: # %bb.0: 1966; SLM-NEXT: #APP 1967; SLM-NEXT: bsfw %di, %ax # sched: [10:10.00] 1968; SLM-NEXT: bsfw (%rsi), %cx # sched: [13:10.00] 1969; SLM-NEXT: #NO_APP 1970; SLM-NEXT: orl %ecx, %eax # sched: [1:0.50] 1971; SLM-NEXT: # kill: def $ax killed $ax killed $eax 1972; SLM-NEXT: retq # sched: [4:1.00] 1973; 1974; SANDY-LABEL: test_bsf16: 1975; SANDY: # %bb.0: 1976; SANDY-NEXT: #APP 1977; SANDY-NEXT: bsfw %di, %ax # sched: [3:1.00] 1978; SANDY-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 1979; SANDY-NEXT: #NO_APP 1980; SANDY-NEXT: orl %ecx, %eax # sched: [1:0.33] 1981; SANDY-NEXT: # kill: def $ax killed $ax killed $eax 1982; SANDY-NEXT: retq # sched: [1:1.00] 1983; 1984; HASWELL-LABEL: test_bsf16: 1985; HASWELL: # %bb.0: 1986; HASWELL-NEXT: #APP 1987; HASWELL-NEXT: bsfw %di, %ax # sched: [3:1.00] 1988; HASWELL-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 1989; HASWELL-NEXT: #NO_APP 1990; HASWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 1991; HASWELL-NEXT: # kill: def $ax killed $ax killed $eax 1992; HASWELL-NEXT: retq # sched: [7:1.00] 1993; 1994; BROADWELL-LABEL: test_bsf16: 1995; BROADWELL: # %bb.0: 1996; BROADWELL-NEXT: #APP 1997; BROADWELL-NEXT: bsfw %di, %ax # sched: [3:1.00] 1998; BROADWELL-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 1999; BROADWELL-NEXT: #NO_APP 2000; BROADWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2001; BROADWELL-NEXT: # kill: def $ax killed $ax killed $eax 2002; BROADWELL-NEXT: retq # sched: [7:1.00] 2003; 2004; SKYLAKE-LABEL: test_bsf16: 2005; SKYLAKE: # %bb.0: 2006; SKYLAKE-NEXT: #APP 2007; SKYLAKE-NEXT: bsfw %di, %ax # sched: [3:1.00] 2008; SKYLAKE-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 2009; SKYLAKE-NEXT: #NO_APP 2010; SKYLAKE-NEXT: orl %ecx, %eax # sched: [1:0.25] 2011; SKYLAKE-NEXT: # kill: def $ax killed $ax killed $eax 2012; SKYLAKE-NEXT: retq # sched: [7:1.00] 2013; 2014; SKX-LABEL: test_bsf16: 2015; SKX: # %bb.0: 2016; SKX-NEXT: #APP 2017; SKX-NEXT: bsfw %di, %ax # sched: [3:1.00] 2018; SKX-NEXT: bsfw (%rsi), %cx # sched: [8:1.00] 2019; SKX-NEXT: #NO_APP 2020; SKX-NEXT: orl %ecx, %eax # sched: [1:0.25] 2021; SKX-NEXT: # kill: def $ax killed $ax killed $eax 2022; SKX-NEXT: retq # sched: [7:1.00] 2023; 2024; BTVER2-LABEL: test_bsf16: 2025; BTVER2: # %bb.0: 2026; BTVER2-NEXT: #APP 2027; BTVER2-NEXT: bsfw %di, %ax # sched: [5:2.00] 2028; BTVER2-NEXT: bsfw (%rsi), %cx # sched: [8:2.00] 2029; BTVER2-NEXT: #NO_APP 2030; BTVER2-NEXT: orl %ecx, %eax # sched: [1:0.50] 2031; BTVER2-NEXT: # kill: def $ax killed $ax killed $eax 2032; BTVER2-NEXT: retq # sched: [4:1.00] 2033; 2034; ZNVER1-LABEL: test_bsf16: 2035; ZNVER1: # %bb.0: 2036; ZNVER1-NEXT: #APP 2037; ZNVER1-NEXT: bsfw %di, %ax # sched: [3:0.25] 2038; ZNVER1-NEXT: bsfw (%rsi), %cx # sched: [7:0.50] 2039; ZNVER1-NEXT: #NO_APP 2040; ZNVER1-NEXT: orl %ecx, %eax # sched: [1:0.25] 2041; ZNVER1-NEXT: # kill: def $ax killed $ax killed $eax 2042; ZNVER1-NEXT: retq # sched: [1:0.50] 2043 %1 = call { i16, i16 } asm sideeffect "bsf $2, $0 \0A\09 bsf $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i16 %a0, i16* %a1) 2044 %2 = extractvalue { i16, i16 } %1, 0 2045 %3 = extractvalue { i16, i16 } %1, 1 2046 %4 = or i16 %2, %3 2047 ret i16 %4 2048} 2049define i32 @test_bsf32(i32 %a0, i32* %a1) optsize { 2050; GENERIC-LABEL: test_bsf32: 2051; GENERIC: # %bb.0: 2052; GENERIC-NEXT: #APP 2053; GENERIC-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2054; GENERIC-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2055; GENERIC-NEXT: #NO_APP 2056; GENERIC-NEXT: orl %ecx, %eax # sched: [1:0.33] 2057; GENERIC-NEXT: retq # sched: [1:1.00] 2058; 2059; ATOM-LABEL: test_bsf32: 2060; ATOM: # %bb.0: 2061; ATOM-NEXT: #APP 2062; ATOM-NEXT: bsfl %edi, %eax # sched: [16:8.00] 2063; ATOM-NEXT: bsfl (%rsi), %ecx # sched: [16:8.00] 2064; ATOM-NEXT: #NO_APP 2065; ATOM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2066; ATOM-NEXT: retq # sched: [79:39.50] 2067; 2068; SLM-LABEL: test_bsf32: 2069; SLM: # %bb.0: 2070; SLM-NEXT: #APP 2071; SLM-NEXT: bsfl %edi, %eax # sched: [10:10.00] 2072; SLM-NEXT: bsfl (%rsi), %ecx # sched: [13:10.00] 2073; SLM-NEXT: #NO_APP 2074; SLM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2075; SLM-NEXT: retq # sched: [4:1.00] 2076; 2077; SANDY-LABEL: test_bsf32: 2078; SANDY: # %bb.0: 2079; SANDY-NEXT: #APP 2080; SANDY-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2081; SANDY-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2082; SANDY-NEXT: #NO_APP 2083; SANDY-NEXT: orl %ecx, %eax # sched: [1:0.33] 2084; SANDY-NEXT: retq # sched: [1:1.00] 2085; 2086; HASWELL-LABEL: test_bsf32: 2087; HASWELL: # %bb.0: 2088; HASWELL-NEXT: #APP 2089; HASWELL-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2090; HASWELL-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2091; HASWELL-NEXT: #NO_APP 2092; HASWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2093; HASWELL-NEXT: retq # sched: [7:1.00] 2094; 2095; BROADWELL-LABEL: test_bsf32: 2096; BROADWELL: # %bb.0: 2097; BROADWELL-NEXT: #APP 2098; BROADWELL-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2099; BROADWELL-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2100; BROADWELL-NEXT: #NO_APP 2101; BROADWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2102; BROADWELL-NEXT: retq # sched: [7:1.00] 2103; 2104; SKYLAKE-LABEL: test_bsf32: 2105; SKYLAKE: # %bb.0: 2106; SKYLAKE-NEXT: #APP 2107; SKYLAKE-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2108; SKYLAKE-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2109; SKYLAKE-NEXT: #NO_APP 2110; SKYLAKE-NEXT: orl %ecx, %eax # sched: [1:0.25] 2111; SKYLAKE-NEXT: retq # sched: [7:1.00] 2112; 2113; SKX-LABEL: test_bsf32: 2114; SKX: # %bb.0: 2115; SKX-NEXT: #APP 2116; SKX-NEXT: bsfl %edi, %eax # sched: [3:1.00] 2117; SKX-NEXT: bsfl (%rsi), %ecx # sched: [8:1.00] 2118; SKX-NEXT: #NO_APP 2119; SKX-NEXT: orl %ecx, %eax # sched: [1:0.25] 2120; SKX-NEXT: retq # sched: [7:1.00] 2121; 2122; BTVER2-LABEL: test_bsf32: 2123; BTVER2: # %bb.0: 2124; BTVER2-NEXT: #APP 2125; BTVER2-NEXT: bsfl %edi, %eax # sched: [5:2.00] 2126; BTVER2-NEXT: bsfl (%rsi), %ecx # sched: [8:2.00] 2127; BTVER2-NEXT: #NO_APP 2128; BTVER2-NEXT: orl %ecx, %eax # sched: [1:0.50] 2129; BTVER2-NEXT: retq # sched: [4:1.00] 2130; 2131; ZNVER1-LABEL: test_bsf32: 2132; ZNVER1: # %bb.0: 2133; ZNVER1-NEXT: #APP 2134; ZNVER1-NEXT: bsfl %edi, %eax # sched: [3:0.25] 2135; ZNVER1-NEXT: bsfl (%rsi), %ecx # sched: [7:0.50] 2136; ZNVER1-NEXT: #NO_APP 2137; ZNVER1-NEXT: orl %ecx, %eax # sched: [1:0.25] 2138; ZNVER1-NEXT: retq # sched: [1:0.50] 2139 %1 = call { i32, i32 } asm sideeffect "bsf $2, $0 \0A\09 bsf $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i32 %a0, i32* %a1) 2140 %2 = extractvalue { i32, i32 } %1, 0 2141 %3 = extractvalue { i32, i32 } %1, 1 2142 %4 = or i32 %2, %3 2143 ret i32 %4 2144} 2145define i64 @test_bsf64(i64 %a0, i64* %a1) optsize { 2146; GENERIC-LABEL: test_bsf64: 2147; GENERIC: # %bb.0: 2148; GENERIC-NEXT: #APP 2149; GENERIC-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2150; GENERIC-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2151; GENERIC-NEXT: #NO_APP 2152; GENERIC-NEXT: orq %rcx, %rax # sched: [1:0.33] 2153; GENERIC-NEXT: retq # sched: [1:1.00] 2154; 2155; ATOM-LABEL: test_bsf64: 2156; ATOM: # %bb.0: 2157; ATOM-NEXT: #APP 2158; ATOM-NEXT: bsfq %rdi, %rax # sched: [16:8.00] 2159; ATOM-NEXT: bsfq (%rsi), %rcx # sched: [16:8.00] 2160; ATOM-NEXT: #NO_APP 2161; ATOM-NEXT: orq %rcx, %rax # sched: [1:0.50] 2162; ATOM-NEXT: retq # sched: [79:39.50] 2163; 2164; SLM-LABEL: test_bsf64: 2165; SLM: # %bb.0: 2166; SLM-NEXT: #APP 2167; SLM-NEXT: bsfq %rdi, %rax # sched: [10:10.00] 2168; SLM-NEXT: bsfq (%rsi), %rcx # sched: [13:10.00] 2169; SLM-NEXT: #NO_APP 2170; SLM-NEXT: orq %rcx, %rax # sched: [1:0.50] 2171; SLM-NEXT: retq # sched: [4:1.00] 2172; 2173; SANDY-LABEL: test_bsf64: 2174; SANDY: # %bb.0: 2175; SANDY-NEXT: #APP 2176; SANDY-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2177; SANDY-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2178; SANDY-NEXT: #NO_APP 2179; SANDY-NEXT: orq %rcx, %rax # sched: [1:0.33] 2180; SANDY-NEXT: retq # sched: [1:1.00] 2181; 2182; HASWELL-LABEL: test_bsf64: 2183; HASWELL: # %bb.0: 2184; HASWELL-NEXT: #APP 2185; HASWELL-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2186; HASWELL-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2187; HASWELL-NEXT: #NO_APP 2188; HASWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 2189; HASWELL-NEXT: retq # sched: [7:1.00] 2190; 2191; BROADWELL-LABEL: test_bsf64: 2192; BROADWELL: # %bb.0: 2193; BROADWELL-NEXT: #APP 2194; BROADWELL-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2195; BROADWELL-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2196; BROADWELL-NEXT: #NO_APP 2197; BROADWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 2198; BROADWELL-NEXT: retq # sched: [7:1.00] 2199; 2200; SKYLAKE-LABEL: test_bsf64: 2201; SKYLAKE: # %bb.0: 2202; SKYLAKE-NEXT: #APP 2203; SKYLAKE-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2204; SKYLAKE-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2205; SKYLAKE-NEXT: #NO_APP 2206; SKYLAKE-NEXT: orq %rcx, %rax # sched: [1:0.25] 2207; SKYLAKE-NEXT: retq # sched: [7:1.00] 2208; 2209; SKX-LABEL: test_bsf64: 2210; SKX: # %bb.0: 2211; SKX-NEXT: #APP 2212; SKX-NEXT: bsfq %rdi, %rax # sched: [3:1.00] 2213; SKX-NEXT: bsfq (%rsi), %rcx # sched: [8:1.00] 2214; SKX-NEXT: #NO_APP 2215; SKX-NEXT: orq %rcx, %rax # sched: [1:0.25] 2216; SKX-NEXT: retq # sched: [7:1.00] 2217; 2218; BTVER2-LABEL: test_bsf64: 2219; BTVER2: # %bb.0: 2220; BTVER2-NEXT: #APP 2221; BTVER2-NEXT: bsfq %rdi, %rax # sched: [5:2.00] 2222; BTVER2-NEXT: bsfq (%rsi), %rcx # sched: [8:2.00] 2223; BTVER2-NEXT: #NO_APP 2224; BTVER2-NEXT: orq %rcx, %rax # sched: [1:0.50] 2225; BTVER2-NEXT: retq # sched: [4:1.00] 2226; 2227; ZNVER1-LABEL: test_bsf64: 2228; ZNVER1: # %bb.0: 2229; ZNVER1-NEXT: #APP 2230; ZNVER1-NEXT: bsfq %rdi, %rax # sched: [3:0.25] 2231; ZNVER1-NEXT: bsfq (%rsi), %rcx # sched: [7:0.50] 2232; ZNVER1-NEXT: #NO_APP 2233; ZNVER1-NEXT: orq %rcx, %rax # sched: [1:0.25] 2234; ZNVER1-NEXT: retq # sched: [1:0.50] 2235 %1 = call { i64, i64 } asm sideeffect "bsf $2, $0 \0A\09 bsf $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i64 %a0, i64* %a1) 2236 %2 = extractvalue { i64, i64 } %1, 0 2237 %3 = extractvalue { i64, i64 } %1, 1 2238 %4 = or i64 %2, %3 2239 ret i64 %4 2240} 2241 2242define i16 @test_bsr16(i16 %a0, i16* %a1) optsize { 2243; GENERIC-LABEL: test_bsr16: 2244; GENERIC: # %bb.0: 2245; GENERIC-NEXT: #APP 2246; GENERIC-NEXT: bsrw %di, %ax # sched: [3:1.00] 2247; GENERIC-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2248; GENERIC-NEXT: #NO_APP 2249; GENERIC-NEXT: orl %ecx, %eax # sched: [1:0.33] 2250; GENERIC-NEXT: # kill: def $ax killed $ax killed $eax 2251; GENERIC-NEXT: retq # sched: [1:1.00] 2252; 2253; ATOM-LABEL: test_bsr16: 2254; ATOM: # %bb.0: 2255; ATOM-NEXT: #APP 2256; ATOM-NEXT: bsrw %di, %ax # sched: [16:8.00] 2257; ATOM-NEXT: bsrw (%rsi), %cx # sched: [16:8.00] 2258; ATOM-NEXT: #NO_APP 2259; ATOM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2260; ATOM-NEXT: # kill: def $ax killed $ax killed $eax 2261; ATOM-NEXT: retq # sched: [79:39.50] 2262; 2263; SLM-LABEL: test_bsr16: 2264; SLM: # %bb.0: 2265; SLM-NEXT: #APP 2266; SLM-NEXT: bsrw %di, %ax # sched: [10:10.00] 2267; SLM-NEXT: bsrw (%rsi), %cx # sched: [13:10.00] 2268; SLM-NEXT: #NO_APP 2269; SLM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2270; SLM-NEXT: # kill: def $ax killed $ax killed $eax 2271; SLM-NEXT: retq # sched: [4:1.00] 2272; 2273; SANDY-LABEL: test_bsr16: 2274; SANDY: # %bb.0: 2275; SANDY-NEXT: #APP 2276; SANDY-NEXT: bsrw %di, %ax # sched: [3:1.00] 2277; SANDY-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2278; SANDY-NEXT: #NO_APP 2279; SANDY-NEXT: orl %ecx, %eax # sched: [1:0.33] 2280; SANDY-NEXT: # kill: def $ax killed $ax killed $eax 2281; SANDY-NEXT: retq # sched: [1:1.00] 2282; 2283; HASWELL-LABEL: test_bsr16: 2284; HASWELL: # %bb.0: 2285; HASWELL-NEXT: #APP 2286; HASWELL-NEXT: bsrw %di, %ax # sched: [3:1.00] 2287; HASWELL-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2288; HASWELL-NEXT: #NO_APP 2289; HASWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2290; HASWELL-NEXT: # kill: def $ax killed $ax killed $eax 2291; HASWELL-NEXT: retq # sched: [7:1.00] 2292; 2293; BROADWELL-LABEL: test_bsr16: 2294; BROADWELL: # %bb.0: 2295; BROADWELL-NEXT: #APP 2296; BROADWELL-NEXT: bsrw %di, %ax # sched: [3:1.00] 2297; BROADWELL-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2298; BROADWELL-NEXT: #NO_APP 2299; BROADWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2300; BROADWELL-NEXT: # kill: def $ax killed $ax killed $eax 2301; BROADWELL-NEXT: retq # sched: [7:1.00] 2302; 2303; SKYLAKE-LABEL: test_bsr16: 2304; SKYLAKE: # %bb.0: 2305; SKYLAKE-NEXT: #APP 2306; SKYLAKE-NEXT: bsrw %di, %ax # sched: [3:1.00] 2307; SKYLAKE-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2308; SKYLAKE-NEXT: #NO_APP 2309; SKYLAKE-NEXT: orl %ecx, %eax # sched: [1:0.25] 2310; SKYLAKE-NEXT: # kill: def $ax killed $ax killed $eax 2311; SKYLAKE-NEXT: retq # sched: [7:1.00] 2312; 2313; SKX-LABEL: test_bsr16: 2314; SKX: # %bb.0: 2315; SKX-NEXT: #APP 2316; SKX-NEXT: bsrw %di, %ax # sched: [3:1.00] 2317; SKX-NEXT: bsrw (%rsi), %cx # sched: [8:1.00] 2318; SKX-NEXT: #NO_APP 2319; SKX-NEXT: orl %ecx, %eax # sched: [1:0.25] 2320; SKX-NEXT: # kill: def $ax killed $ax killed $eax 2321; SKX-NEXT: retq # sched: [7:1.00] 2322; 2323; BTVER2-LABEL: test_bsr16: 2324; BTVER2: # %bb.0: 2325; BTVER2-NEXT: #APP 2326; BTVER2-NEXT: bsrw %di, %ax # sched: [5:2.00] 2327; BTVER2-NEXT: bsrw (%rsi), %cx # sched: [8:2.00] 2328; BTVER2-NEXT: #NO_APP 2329; BTVER2-NEXT: orl %ecx, %eax # sched: [1:0.50] 2330; BTVER2-NEXT: # kill: def $ax killed $ax killed $eax 2331; BTVER2-NEXT: retq # sched: [4:1.00] 2332; 2333; ZNVER1-LABEL: test_bsr16: 2334; ZNVER1: # %bb.0: 2335; ZNVER1-NEXT: #APP 2336; ZNVER1-NEXT: bsrw %di, %ax # sched: [3:0.25] 2337; ZNVER1-NEXT: bsrw (%rsi), %cx # sched: [7:0.50] 2338; ZNVER1-NEXT: #NO_APP 2339; ZNVER1-NEXT: orl %ecx, %eax # sched: [1:0.25] 2340; ZNVER1-NEXT: # kill: def $ax killed $ax killed $eax 2341; ZNVER1-NEXT: retq # sched: [1:0.50] 2342 %1 = call { i16, i16 } asm sideeffect "bsr $2, $0 \0A\09 bsr $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i16 %a0, i16* %a1) 2343 %2 = extractvalue { i16, i16 } %1, 0 2344 %3 = extractvalue { i16, i16 } %1, 1 2345 %4 = or i16 %2, %3 2346 ret i16 %4 2347} 2348define i32 @test_bsr32(i32 %a0, i32* %a1) optsize { 2349; GENERIC-LABEL: test_bsr32: 2350; GENERIC: # %bb.0: 2351; GENERIC-NEXT: #APP 2352; GENERIC-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2353; GENERIC-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2354; GENERIC-NEXT: #NO_APP 2355; GENERIC-NEXT: orl %ecx, %eax # sched: [1:0.33] 2356; GENERIC-NEXT: retq # sched: [1:1.00] 2357; 2358; ATOM-LABEL: test_bsr32: 2359; ATOM: # %bb.0: 2360; ATOM-NEXT: #APP 2361; ATOM-NEXT: bsrl %edi, %eax # sched: [16:8.00] 2362; ATOM-NEXT: bsrl (%rsi), %ecx # sched: [16:8.00] 2363; ATOM-NEXT: #NO_APP 2364; ATOM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2365; ATOM-NEXT: retq # sched: [79:39.50] 2366; 2367; SLM-LABEL: test_bsr32: 2368; SLM: # %bb.0: 2369; SLM-NEXT: #APP 2370; SLM-NEXT: bsrl %edi, %eax # sched: [10:10.00] 2371; SLM-NEXT: bsrl (%rsi), %ecx # sched: [13:10.00] 2372; SLM-NEXT: #NO_APP 2373; SLM-NEXT: orl %ecx, %eax # sched: [1:0.50] 2374; SLM-NEXT: retq # sched: [4:1.00] 2375; 2376; SANDY-LABEL: test_bsr32: 2377; SANDY: # %bb.0: 2378; SANDY-NEXT: #APP 2379; SANDY-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2380; SANDY-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2381; SANDY-NEXT: #NO_APP 2382; SANDY-NEXT: orl %ecx, %eax # sched: [1:0.33] 2383; SANDY-NEXT: retq # sched: [1:1.00] 2384; 2385; HASWELL-LABEL: test_bsr32: 2386; HASWELL: # %bb.0: 2387; HASWELL-NEXT: #APP 2388; HASWELL-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2389; HASWELL-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2390; HASWELL-NEXT: #NO_APP 2391; HASWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2392; HASWELL-NEXT: retq # sched: [7:1.00] 2393; 2394; BROADWELL-LABEL: test_bsr32: 2395; BROADWELL: # %bb.0: 2396; BROADWELL-NEXT: #APP 2397; BROADWELL-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2398; BROADWELL-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2399; BROADWELL-NEXT: #NO_APP 2400; BROADWELL-NEXT: orl %ecx, %eax # sched: [1:0.25] 2401; BROADWELL-NEXT: retq # sched: [7:1.00] 2402; 2403; SKYLAKE-LABEL: test_bsr32: 2404; SKYLAKE: # %bb.0: 2405; SKYLAKE-NEXT: #APP 2406; SKYLAKE-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2407; SKYLAKE-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2408; SKYLAKE-NEXT: #NO_APP 2409; SKYLAKE-NEXT: orl %ecx, %eax # sched: [1:0.25] 2410; SKYLAKE-NEXT: retq # sched: [7:1.00] 2411; 2412; SKX-LABEL: test_bsr32: 2413; SKX: # %bb.0: 2414; SKX-NEXT: #APP 2415; SKX-NEXT: bsrl %edi, %eax # sched: [3:1.00] 2416; SKX-NEXT: bsrl (%rsi), %ecx # sched: [8:1.00] 2417; SKX-NEXT: #NO_APP 2418; SKX-NEXT: orl %ecx, %eax # sched: [1:0.25] 2419; SKX-NEXT: retq # sched: [7:1.00] 2420; 2421; BTVER2-LABEL: test_bsr32: 2422; BTVER2: # %bb.0: 2423; BTVER2-NEXT: #APP 2424; BTVER2-NEXT: bsrl %edi, %eax # sched: [5:2.00] 2425; BTVER2-NEXT: bsrl (%rsi), %ecx # sched: [8:2.00] 2426; BTVER2-NEXT: #NO_APP 2427; BTVER2-NEXT: orl %ecx, %eax # sched: [1:0.50] 2428; BTVER2-NEXT: retq # sched: [4:1.00] 2429; 2430; ZNVER1-LABEL: test_bsr32: 2431; ZNVER1: # %bb.0: 2432; ZNVER1-NEXT: #APP 2433; ZNVER1-NEXT: bsrl %edi, %eax # sched: [3:0.25] 2434; ZNVER1-NEXT: bsrl (%rsi), %ecx # sched: [7:0.50] 2435; ZNVER1-NEXT: #NO_APP 2436; ZNVER1-NEXT: orl %ecx, %eax # sched: [1:0.25] 2437; ZNVER1-NEXT: retq # sched: [1:0.50] 2438 %1 = call { i32, i32 } asm sideeffect "bsr $2, $0 \0A\09 bsr $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i32 %a0, i32* %a1) 2439 %2 = extractvalue { i32, i32 } %1, 0 2440 %3 = extractvalue { i32, i32 } %1, 1 2441 %4 = or i32 %2, %3 2442 ret i32 %4 2443} 2444define i64 @test_bsr64(i64 %a0, i64* %a1) optsize { 2445; GENERIC-LABEL: test_bsr64: 2446; GENERIC: # %bb.0: 2447; GENERIC-NEXT: #APP 2448; GENERIC-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2449; GENERIC-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2450; GENERIC-NEXT: #NO_APP 2451; GENERIC-NEXT: orq %rcx, %rax # sched: [1:0.33] 2452; GENERIC-NEXT: retq # sched: [1:1.00] 2453; 2454; ATOM-LABEL: test_bsr64: 2455; ATOM: # %bb.0: 2456; ATOM-NEXT: #APP 2457; ATOM-NEXT: bsrq %rdi, %rax # sched: [16:8.00] 2458; ATOM-NEXT: bsrq (%rsi), %rcx # sched: [16:8.00] 2459; ATOM-NEXT: #NO_APP 2460; ATOM-NEXT: orq %rcx, %rax # sched: [1:0.50] 2461; ATOM-NEXT: retq # sched: [79:39.50] 2462; 2463; SLM-LABEL: test_bsr64: 2464; SLM: # %bb.0: 2465; SLM-NEXT: #APP 2466; SLM-NEXT: bsrq %rdi, %rax # sched: [10:10.00] 2467; SLM-NEXT: bsrq (%rsi), %rcx # sched: [13:10.00] 2468; SLM-NEXT: #NO_APP 2469; SLM-NEXT: orq %rcx, %rax # sched: [1:0.50] 2470; SLM-NEXT: retq # sched: [4:1.00] 2471; 2472; SANDY-LABEL: test_bsr64: 2473; SANDY: # %bb.0: 2474; SANDY-NEXT: #APP 2475; SANDY-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2476; SANDY-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2477; SANDY-NEXT: #NO_APP 2478; SANDY-NEXT: orq %rcx, %rax # sched: [1:0.33] 2479; SANDY-NEXT: retq # sched: [1:1.00] 2480; 2481; HASWELL-LABEL: test_bsr64: 2482; HASWELL: # %bb.0: 2483; HASWELL-NEXT: #APP 2484; HASWELL-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2485; HASWELL-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2486; HASWELL-NEXT: #NO_APP 2487; HASWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 2488; HASWELL-NEXT: retq # sched: [7:1.00] 2489; 2490; BROADWELL-LABEL: test_bsr64: 2491; BROADWELL: # %bb.0: 2492; BROADWELL-NEXT: #APP 2493; BROADWELL-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2494; BROADWELL-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2495; BROADWELL-NEXT: #NO_APP 2496; BROADWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 2497; BROADWELL-NEXT: retq # sched: [7:1.00] 2498; 2499; SKYLAKE-LABEL: test_bsr64: 2500; SKYLAKE: # %bb.0: 2501; SKYLAKE-NEXT: #APP 2502; SKYLAKE-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2503; SKYLAKE-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2504; SKYLAKE-NEXT: #NO_APP 2505; SKYLAKE-NEXT: orq %rcx, %rax # sched: [1:0.25] 2506; SKYLAKE-NEXT: retq # sched: [7:1.00] 2507; 2508; SKX-LABEL: test_bsr64: 2509; SKX: # %bb.0: 2510; SKX-NEXT: #APP 2511; SKX-NEXT: bsrq %rdi, %rax # sched: [3:1.00] 2512; SKX-NEXT: bsrq (%rsi), %rcx # sched: [8:1.00] 2513; SKX-NEXT: #NO_APP 2514; SKX-NEXT: orq %rcx, %rax # sched: [1:0.25] 2515; SKX-NEXT: retq # sched: [7:1.00] 2516; 2517; BTVER2-LABEL: test_bsr64: 2518; BTVER2: # %bb.0: 2519; BTVER2-NEXT: #APP 2520; BTVER2-NEXT: bsrq %rdi, %rax # sched: [5:2.00] 2521; BTVER2-NEXT: bsrq (%rsi), %rcx # sched: [8:2.00] 2522; BTVER2-NEXT: #NO_APP 2523; BTVER2-NEXT: orq %rcx, %rax # sched: [1:0.50] 2524; BTVER2-NEXT: retq # sched: [4:1.00] 2525; 2526; ZNVER1-LABEL: test_bsr64: 2527; ZNVER1: # %bb.0: 2528; ZNVER1-NEXT: #APP 2529; ZNVER1-NEXT: bsrq %rdi, %rax # sched: [3:0.25] 2530; ZNVER1-NEXT: bsrq (%rsi), %rcx # sched: [7:0.50] 2531; ZNVER1-NEXT: #NO_APP 2532; ZNVER1-NEXT: orq %rcx, %rax # sched: [1:0.25] 2533; ZNVER1-NEXT: retq # sched: [1:0.50] 2534 %1 = call { i64, i64 } asm sideeffect "bsr $2, $0 \0A\09 bsr $3, $1", "=r,=r,r,*m,~{dirflag},~{fpsr},~{flags}"(i64 %a0, i64* %a1) 2535 %2 = extractvalue { i64, i64 } %1, 0 2536 %3 = extractvalue { i64, i64 } %1, 1 2537 %4 = or i64 %2, %3 2538 ret i64 %4 2539} 2540 2541define i32 @test_bswap32(i32 %a0) optsize { 2542; GENERIC-LABEL: test_bswap32: 2543; GENERIC: # %bb.0: 2544; GENERIC-NEXT: bswapl %edi # sched: [1:1.00] 2545; GENERIC-NEXT: movl %edi, %eax # sched: [1:0.33] 2546; GENERIC-NEXT: retq # sched: [1:1.00] 2547; 2548; ATOM-LABEL: test_bswap32: 2549; ATOM: # %bb.0: 2550; ATOM-NEXT: bswapl %edi # sched: [1:1.00] 2551; ATOM-NEXT: movl %edi, %eax # sched: [1:0.50] 2552; ATOM-NEXT: retq # sched: [79:39.50] 2553; 2554; SLM-LABEL: test_bswap32: 2555; SLM: # %bb.0: 2556; SLM-NEXT: bswapl %edi # sched: [1:0.50] 2557; SLM-NEXT: movl %edi, %eax # sched: [1:0.50] 2558; SLM-NEXT: retq # sched: [4:1.00] 2559; 2560; SANDY-LABEL: test_bswap32: 2561; SANDY: # %bb.0: 2562; SANDY-NEXT: bswapl %edi # sched: [1:1.00] 2563; SANDY-NEXT: movl %edi, %eax # sched: [1:0.33] 2564; SANDY-NEXT: retq # sched: [1:1.00] 2565; 2566; HASWELL-LABEL: test_bswap32: 2567; HASWELL: # %bb.0: 2568; HASWELL-NEXT: bswapl %edi # sched: [1:0.50] 2569; HASWELL-NEXT: movl %edi, %eax # sched: [1:0.25] 2570; HASWELL-NEXT: retq # sched: [7:1.00] 2571; 2572; BROADWELL-LABEL: test_bswap32: 2573; BROADWELL: # %bb.0: 2574; BROADWELL-NEXT: bswapl %edi # sched: [1:0.50] 2575; BROADWELL-NEXT: movl %edi, %eax # sched: [1:0.25] 2576; BROADWELL-NEXT: retq # sched: [7:1.00] 2577; 2578; SKYLAKE-LABEL: test_bswap32: 2579; SKYLAKE: # %bb.0: 2580; SKYLAKE-NEXT: bswapl %edi # sched: [1:0.50] 2581; SKYLAKE-NEXT: movl %edi, %eax # sched: [1:0.25] 2582; SKYLAKE-NEXT: retq # sched: [7:1.00] 2583; 2584; SKX-LABEL: test_bswap32: 2585; SKX: # %bb.0: 2586; SKX-NEXT: bswapl %edi # sched: [1:0.50] 2587; SKX-NEXT: movl %edi, %eax # sched: [1:0.25] 2588; SKX-NEXT: retq # sched: [7:1.00] 2589; 2590; BTVER2-LABEL: test_bswap32: 2591; BTVER2: # %bb.0: 2592; BTVER2-NEXT: bswapl %edi # sched: [1:0.50] 2593; BTVER2-NEXT: movl %edi, %eax # sched: [1:0.50] 2594; BTVER2-NEXT: retq # sched: [4:1.00] 2595; 2596; ZNVER1-LABEL: test_bswap32: 2597; ZNVER1: # %bb.0: 2598; ZNVER1-NEXT: bswapl %edi # sched: [1:1.00] 2599; ZNVER1-NEXT: movl %edi, %eax # sched: [1:0.25] 2600; ZNVER1-NEXT: retq # sched: [1:0.50] 2601 %1 = tail call i32 asm "bswap $0", "=r,0"(i32 %a0) nounwind 2602 ret i32 %1 2603} 2604define i64 @test_bswap64(i64 %a0) optsize { 2605; GENERIC-LABEL: test_bswap64: 2606; GENERIC: # %bb.0: 2607; GENERIC-NEXT: bswapq %rdi # sched: [2:1.00] 2608; GENERIC-NEXT: movq %rdi, %rax # sched: [1:0.33] 2609; GENERIC-NEXT: retq # sched: [1:1.00] 2610; 2611; ATOM-LABEL: test_bswap64: 2612; ATOM: # %bb.0: 2613; ATOM-NEXT: bswapq %rdi # sched: [1:1.00] 2614; ATOM-NEXT: movq %rdi, %rax # sched: [1:0.50] 2615; ATOM-NEXT: retq # sched: [79:39.50] 2616; 2617; SLM-LABEL: test_bswap64: 2618; SLM: # %bb.0: 2619; SLM-NEXT: bswapq %rdi # sched: [1:0.50] 2620; SLM-NEXT: movq %rdi, %rax # sched: [1:0.50] 2621; SLM-NEXT: retq # sched: [4:1.00] 2622; 2623; SANDY-LABEL: test_bswap64: 2624; SANDY: # %bb.0: 2625; SANDY-NEXT: bswapq %rdi # sched: [2:1.00] 2626; SANDY-NEXT: movq %rdi, %rax # sched: [1:0.33] 2627; SANDY-NEXT: retq # sched: [1:1.00] 2628; 2629; HASWELL-LABEL: test_bswap64: 2630; HASWELL: # %bb.0: 2631; HASWELL-NEXT: bswapq %rdi # sched: [2:0.50] 2632; HASWELL-NEXT: movq %rdi, %rax # sched: [1:0.25] 2633; HASWELL-NEXT: retq # sched: [7:1.00] 2634; 2635; BROADWELL-LABEL: test_bswap64: 2636; BROADWELL: # %bb.0: 2637; BROADWELL-NEXT: bswapq %rdi # sched: [2:0.50] 2638; BROADWELL-NEXT: movq %rdi, %rax # sched: [1:0.25] 2639; BROADWELL-NEXT: retq # sched: [7:1.00] 2640; 2641; SKYLAKE-LABEL: test_bswap64: 2642; SKYLAKE: # %bb.0: 2643; SKYLAKE-NEXT: bswapq %rdi # sched: [2:0.50] 2644; SKYLAKE-NEXT: movq %rdi, %rax # sched: [1:0.25] 2645; SKYLAKE-NEXT: retq # sched: [7:1.00] 2646; 2647; SKX-LABEL: test_bswap64: 2648; SKX: # %bb.0: 2649; SKX-NEXT: bswapq %rdi # sched: [2:0.50] 2650; SKX-NEXT: movq %rdi, %rax # sched: [1:0.25] 2651; SKX-NEXT: retq # sched: [7:1.00] 2652; 2653; BTVER2-LABEL: test_bswap64: 2654; BTVER2: # %bb.0: 2655; BTVER2-NEXT: bswapq %rdi # sched: [1:0.50] 2656; BTVER2-NEXT: movq %rdi, %rax # sched: [1:0.50] 2657; BTVER2-NEXT: retq # sched: [4:1.00] 2658; 2659; ZNVER1-LABEL: test_bswap64: 2660; ZNVER1: # %bb.0: 2661; ZNVER1-NEXT: bswapq %rdi # sched: [1:1.00] 2662; ZNVER1-NEXT: movq %rdi, %rax # sched: [1:0.25] 2663; ZNVER1-NEXT: retq # sched: [1:0.50] 2664 %1 = tail call i64 asm "bswap $0", "=r,0"(i64 %a0) nounwind 2665 ret i64 %1 2666} 2667 2668define void @test_bt_btc_btr_bts_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 2669; GENERIC-LABEL: test_bt_btc_btr_bts_16: 2670; GENERIC: # %bb.0: 2671; GENERIC-NEXT: #APP 2672; GENERIC-NEXT: btw %si, %di # sched: [1:0.50] 2673; GENERIC-NEXT: btcw %si, %di # sched: [1:0.50] 2674; GENERIC-NEXT: btrw %si, %di # sched: [1:0.50] 2675; GENERIC-NEXT: btsw %si, %di # sched: [1:0.50] 2676; GENERIC-NEXT: btw %si, (%rdx) # sched: [9:1.00] 2677; GENERIC-NEXT: btcw %si, (%rdx) # sched: [9:1.00] 2678; GENERIC-NEXT: btrw %si, (%rdx) # sched: [9:1.00] 2679; GENERIC-NEXT: btsw %si, (%rdx) # sched: [9:1.00] 2680; GENERIC-NEXT: btw $7, %di # sched: [1:0.50] 2681; GENERIC-NEXT: btcw $7, %di # sched: [1:0.50] 2682; GENERIC-NEXT: btrw $7, %di # sched: [1:0.50] 2683; GENERIC-NEXT: btsw $7, %di # sched: [1:0.50] 2684; GENERIC-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2685; GENERIC-NEXT: btcw $7, (%rdx) # sched: [7:1.00] 2686; GENERIC-NEXT: btrw $7, (%rdx) # sched: [7:1.00] 2687; GENERIC-NEXT: btsw $7, (%rdx) # sched: [7:1.00] 2688; GENERIC-NEXT: #NO_APP 2689; GENERIC-NEXT: retq # sched: [1:1.00] 2690; 2691; ATOM-LABEL: test_bt_btc_btr_bts_16: 2692; ATOM: # %bb.0: 2693; ATOM-NEXT: #APP 2694; ATOM-NEXT: btw %si, %di # sched: [1:1.00] 2695; ATOM-NEXT: btcw %si, %di # sched: [1:1.00] 2696; ATOM-NEXT: btrw %si, %di # sched: [1:1.00] 2697; ATOM-NEXT: btsw %si, %di # sched: [1:1.00] 2698; ATOM-NEXT: btw %si, (%rdx) # sched: [9:4.50] 2699; ATOM-NEXT: btcw %si, (%rdx) # sched: [11:5.50] 2700; ATOM-NEXT: btrw %si, (%rdx) # sched: [11:5.50] 2701; ATOM-NEXT: btsw %si, (%rdx) # sched: [11:5.50] 2702; ATOM-NEXT: btw $7, %di # sched: [1:1.00] 2703; ATOM-NEXT: btcw $7, %di # sched: [1:1.00] 2704; ATOM-NEXT: btrw $7, %di # sched: [1:1.00] 2705; ATOM-NEXT: btsw $7, %di # sched: [1:1.00] 2706; ATOM-NEXT: btw $7, (%rdx) # sched: [1:0.50] 2707; ATOM-NEXT: btcw $7, (%rdx) # sched: [2:1.00] 2708; ATOM-NEXT: btrw $7, (%rdx) # sched: [2:1.00] 2709; ATOM-NEXT: btsw $7, (%rdx) # sched: [2:1.00] 2710; ATOM-NEXT: #NO_APP 2711; ATOM-NEXT: retq # sched: [79:39.50] 2712; 2713; SLM-LABEL: test_bt_btc_btr_bts_16: 2714; SLM: # %bb.0: 2715; SLM-NEXT: #APP 2716; SLM-NEXT: btw %si, %di # sched: [1:0.50] 2717; SLM-NEXT: btcw %si, %di # sched: [1:0.50] 2718; SLM-NEXT: btrw %si, %di # sched: [1:0.50] 2719; SLM-NEXT: btsw %si, %di # sched: [1:0.50] 2720; SLM-NEXT: btw %si, (%rdx) # sched: [4:1.00] 2721; SLM-NEXT: btcw %si, (%rdx) # sched: [4:2.00] 2722; SLM-NEXT: btrw %si, (%rdx) # sched: [4:2.00] 2723; SLM-NEXT: btsw %si, (%rdx) # sched: [4:2.00] 2724; SLM-NEXT: btw $7, %di # sched: [1:0.50] 2725; SLM-NEXT: btcw $7, %di # sched: [1:0.50] 2726; SLM-NEXT: btrw $7, %di # sched: [1:0.50] 2727; SLM-NEXT: btsw $7, %di # sched: [1:0.50] 2728; SLM-NEXT: btw $7, (%rdx) # sched: [1:0.50] 2729; SLM-NEXT: btcw $7, (%rdx) # sched: [4:2.00] 2730; SLM-NEXT: btrw $7, (%rdx) # sched: [4:2.00] 2731; SLM-NEXT: btsw $7, (%rdx) # sched: [4:2.00] 2732; SLM-NEXT: #NO_APP 2733; SLM-NEXT: retq # sched: [4:1.00] 2734; 2735; SANDY-LABEL: test_bt_btc_btr_bts_16: 2736; SANDY: # %bb.0: 2737; SANDY-NEXT: #APP 2738; SANDY-NEXT: btw %si, %di # sched: [1:0.50] 2739; SANDY-NEXT: btcw %si, %di # sched: [1:0.50] 2740; SANDY-NEXT: btrw %si, %di # sched: [1:0.50] 2741; SANDY-NEXT: btsw %si, %di # sched: [1:0.50] 2742; SANDY-NEXT: btw %si, (%rdx) # sched: [9:1.00] 2743; SANDY-NEXT: btcw %si, (%rdx) # sched: [9:1.00] 2744; SANDY-NEXT: btrw %si, (%rdx) # sched: [9:1.00] 2745; SANDY-NEXT: btsw %si, (%rdx) # sched: [9:1.00] 2746; SANDY-NEXT: btw $7, %di # sched: [1:0.50] 2747; SANDY-NEXT: btcw $7, %di # sched: [1:0.50] 2748; SANDY-NEXT: btrw $7, %di # sched: [1:0.50] 2749; SANDY-NEXT: btsw $7, %di # sched: [1:0.50] 2750; SANDY-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2751; SANDY-NEXT: btcw $7, (%rdx) # sched: [7:1.00] 2752; SANDY-NEXT: btrw $7, (%rdx) # sched: [7:1.00] 2753; SANDY-NEXT: btsw $7, (%rdx) # sched: [7:1.00] 2754; SANDY-NEXT: #NO_APP 2755; SANDY-NEXT: retq # sched: [1:1.00] 2756; 2757; HASWELL-LABEL: test_bt_btc_btr_bts_16: 2758; HASWELL: # %bb.0: 2759; HASWELL-NEXT: #APP 2760; HASWELL-NEXT: btw %si, %di # sched: [1:0.50] 2761; HASWELL-NEXT: btcw %si, %di # sched: [1:0.50] 2762; HASWELL-NEXT: btrw %si, %di # sched: [1:0.50] 2763; HASWELL-NEXT: btsw %si, %di # sched: [1:0.50] 2764; HASWELL-NEXT: btw %si, (%rdx) # sched: [1:2.50] 2765; HASWELL-NEXT: btcw %si, (%rdx) # sched: [1:2.75] 2766; HASWELL-NEXT: btrw %si, (%rdx) # sched: [1:2.75] 2767; HASWELL-NEXT: btsw %si, (%rdx) # sched: [1:2.75] 2768; HASWELL-NEXT: btw $7, %di # sched: [1:0.50] 2769; HASWELL-NEXT: btcw $7, %di # sched: [1:0.50] 2770; HASWELL-NEXT: btrw $7, %di # sched: [1:0.50] 2771; HASWELL-NEXT: btsw $7, %di # sched: [1:0.50] 2772; HASWELL-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2773; HASWELL-NEXT: btcw $7, (%rdx) # sched: [7:1.00] 2774; HASWELL-NEXT: btrw $7, (%rdx) # sched: [7:1.00] 2775; HASWELL-NEXT: btsw $7, (%rdx) # sched: [7:1.00] 2776; HASWELL-NEXT: #NO_APP 2777; HASWELL-NEXT: retq # sched: [7:1.00] 2778; 2779; BROADWELL-LABEL: test_bt_btc_btr_bts_16: 2780; BROADWELL: # %bb.0: 2781; BROADWELL-NEXT: #APP 2782; BROADWELL-NEXT: btw %si, %di # sched: [1:0.50] 2783; BROADWELL-NEXT: btcw %si, %di # sched: [1:0.50] 2784; BROADWELL-NEXT: btrw %si, %di # sched: [1:0.50] 2785; BROADWELL-NEXT: btsw %si, %di # sched: [1:0.50] 2786; BROADWELL-NEXT: btw %si, (%rdx) # sched: [6:0.50] 2787; BROADWELL-NEXT: btcw %si, (%rdx) # sched: [6:1.00] 2788; BROADWELL-NEXT: btrw %si, (%rdx) # sched: [6:1.00] 2789; BROADWELL-NEXT: btsw %si, (%rdx) # sched: [6:1.00] 2790; BROADWELL-NEXT: btw $7, %di # sched: [1:0.50] 2791; BROADWELL-NEXT: btcw $7, %di # sched: [1:0.50] 2792; BROADWELL-NEXT: btrw $7, %di # sched: [1:0.50] 2793; BROADWELL-NEXT: btsw $7, %di # sched: [1:0.50] 2794; BROADWELL-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2795; BROADWELL-NEXT: btcw $7, (%rdx) # sched: [6:1.00] 2796; BROADWELL-NEXT: btrw $7, (%rdx) # sched: [6:1.00] 2797; BROADWELL-NEXT: btsw $7, (%rdx) # sched: [6:1.00] 2798; BROADWELL-NEXT: #NO_APP 2799; BROADWELL-NEXT: retq # sched: [7:1.00] 2800; 2801; SKYLAKE-LABEL: test_bt_btc_btr_bts_16: 2802; SKYLAKE: # %bb.0: 2803; SKYLAKE-NEXT: #APP 2804; SKYLAKE-NEXT: btw %si, %di # sched: [1:0.50] 2805; SKYLAKE-NEXT: btcw %si, %di # sched: [1:0.50] 2806; SKYLAKE-NEXT: btrw %si, %di # sched: [1:0.50] 2807; SKYLAKE-NEXT: btsw %si, %di # sched: [1:0.50] 2808; SKYLAKE-NEXT: btw %si, (%rdx) # sched: [6:0.50] 2809; SKYLAKE-NEXT: btcw %si, (%rdx) # sched: [6:1.00] 2810; SKYLAKE-NEXT: btrw %si, (%rdx) # sched: [6:1.00] 2811; SKYLAKE-NEXT: btsw %si, (%rdx) # sched: [6:1.00] 2812; SKYLAKE-NEXT: btw $7, %di # sched: [1:0.50] 2813; SKYLAKE-NEXT: btcw $7, %di # sched: [1:0.50] 2814; SKYLAKE-NEXT: btrw $7, %di # sched: [1:0.50] 2815; SKYLAKE-NEXT: btsw $7, %di # sched: [1:0.50] 2816; SKYLAKE-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2817; SKYLAKE-NEXT: btcw $7, (%rdx) # sched: [6:1.00] 2818; SKYLAKE-NEXT: btrw $7, (%rdx) # sched: [6:1.00] 2819; SKYLAKE-NEXT: btsw $7, (%rdx) # sched: [6:1.00] 2820; SKYLAKE-NEXT: #NO_APP 2821; SKYLAKE-NEXT: retq # sched: [7:1.00] 2822; 2823; SKX-LABEL: test_bt_btc_btr_bts_16: 2824; SKX: # %bb.0: 2825; SKX-NEXT: #APP 2826; SKX-NEXT: btw %si, %di # sched: [1:0.50] 2827; SKX-NEXT: btcw %si, %di # sched: [1:0.50] 2828; SKX-NEXT: btrw %si, %di # sched: [1:0.50] 2829; SKX-NEXT: btsw %si, %di # sched: [1:0.50] 2830; SKX-NEXT: btw %si, (%rdx) # sched: [6:0.50] 2831; SKX-NEXT: btcw %si, (%rdx) # sched: [6:1.00] 2832; SKX-NEXT: btrw %si, (%rdx) # sched: [6:1.00] 2833; SKX-NEXT: btsw %si, (%rdx) # sched: [6:1.00] 2834; SKX-NEXT: btw $7, %di # sched: [1:0.50] 2835; SKX-NEXT: btcw $7, %di # sched: [1:0.50] 2836; SKX-NEXT: btrw $7, %di # sched: [1:0.50] 2837; SKX-NEXT: btsw $7, %di # sched: [1:0.50] 2838; SKX-NEXT: btw $7, (%rdx) # sched: [6:0.50] 2839; SKX-NEXT: btcw $7, (%rdx) # sched: [6:1.00] 2840; SKX-NEXT: btrw $7, (%rdx) # sched: [6:1.00] 2841; SKX-NEXT: btsw $7, (%rdx) # sched: [6:1.00] 2842; SKX-NEXT: #NO_APP 2843; SKX-NEXT: retq # sched: [7:1.00] 2844; 2845; BTVER2-LABEL: test_bt_btc_btr_bts_16: 2846; BTVER2: # %bb.0: 2847; BTVER2-NEXT: #APP 2848; BTVER2-NEXT: btw %si, %di # sched: [1:0.50] 2849; BTVER2-NEXT: btcw %si, %di # sched: [1:0.50] 2850; BTVER2-NEXT: btrw %si, %di # sched: [1:0.50] 2851; BTVER2-NEXT: btsw %si, %di # sched: [1:0.50] 2852; BTVER2-NEXT: btw %si, (%rdx) # sched: [4:1.00] 2853; BTVER2-NEXT: btcw %si, (%rdx) # sched: [4:1.00] 2854; BTVER2-NEXT: btrw %si, (%rdx) # sched: [4:1.00] 2855; BTVER2-NEXT: btsw %si, (%rdx) # sched: [4:1.00] 2856; BTVER2-NEXT: btw $7, %di # sched: [1:0.50] 2857; BTVER2-NEXT: btcw $7, %di # sched: [1:0.50] 2858; BTVER2-NEXT: btrw $7, %di # sched: [1:0.50] 2859; BTVER2-NEXT: btsw $7, %di # sched: [1:0.50] 2860; BTVER2-NEXT: btw $7, (%rdx) # sched: [1:0.50] 2861; BTVER2-NEXT: btcw $7, (%rdx) # sched: [4:1.00] 2862; BTVER2-NEXT: btrw $7, (%rdx) # sched: [4:1.00] 2863; BTVER2-NEXT: btsw $7, (%rdx) # sched: [4:1.00] 2864; BTVER2-NEXT: #NO_APP 2865; BTVER2-NEXT: retq # sched: [4:1.00] 2866; 2867; ZNVER1-LABEL: test_bt_btc_btr_bts_16: 2868; ZNVER1: # %bb.0: 2869; ZNVER1-NEXT: #APP 2870; ZNVER1-NEXT: btw %si, %di # sched: [1:0.25] 2871; ZNVER1-NEXT: btcw %si, %di # sched: [2:0.25] 2872; ZNVER1-NEXT: btrw %si, %di # sched: [2:0.25] 2873; ZNVER1-NEXT: btsw %si, %di # sched: [2:0.25] 2874; ZNVER1-NEXT: btw %si, (%rdx) # sched: [5:0.50] 2875; ZNVER1-NEXT: btcw %si, (%rdx) # sched: [6:0.50] 2876; ZNVER1-NEXT: btrw %si, (%rdx) # sched: [6:0.50] 2877; ZNVER1-NEXT: btsw %si, (%rdx) # sched: [6:0.50] 2878; ZNVER1-NEXT: btw $7, %di # sched: [1:0.25] 2879; ZNVER1-NEXT: btcw $7, %di # sched: [2:0.25] 2880; ZNVER1-NEXT: btrw $7, %di # sched: [2:0.25] 2881; ZNVER1-NEXT: btsw $7, %di # sched: [2:0.25] 2882; ZNVER1-NEXT: btw $7, (%rdx) # sched: [5:0.50] 2883; ZNVER1-NEXT: btcw $7, (%rdx) # sched: [6:0.50] 2884; ZNVER1-NEXT: btrw $7, (%rdx) # sched: [6:0.50] 2885; ZNVER1-NEXT: btsw $7, (%rdx) # sched: [6:0.50] 2886; ZNVER1-NEXT: #NO_APP 2887; ZNVER1-NEXT: retq # sched: [1:0.50] 2888 call void asm sideeffect "btw $1, $0 \0A\09 btcw $1, $0 \0A\09 btrw $1, $0 \0A\09 btsw $1, $0 \0A\09 btw $1, $2 \0A\09 btcw $1, $2 \0A\09 btrw $1, $2 \0A\09 btsw $1, $2 \0A\09 btw $3, $0 \0A\09 btcw $3, $0 \0A\09 btrw $3, $0 \0A\09 btsw $3, $0 \0A\09 btw $3, $2 \0A\09 btcw $3, $2 \0A\09 btrw $3, $2 \0A\09 btsw $3, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 2889 ret void 2890} 2891define void @test_bt_btc_btr_bts_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 2892; GENERIC-LABEL: test_bt_btc_btr_bts_32: 2893; GENERIC: # %bb.0: 2894; GENERIC-NEXT: #APP 2895; GENERIC-NEXT: btl %esi, %edi # sched: [1:0.50] 2896; GENERIC-NEXT: btcl %esi, %edi # sched: [1:0.50] 2897; GENERIC-NEXT: btrl %esi, %edi # sched: [1:0.50] 2898; GENERIC-NEXT: btsl %esi, %edi # sched: [1:0.50] 2899; GENERIC-NEXT: btl %esi, (%rdx) # sched: [9:1.00] 2900; GENERIC-NEXT: btcl %esi, (%rdx) # sched: [9:1.00] 2901; GENERIC-NEXT: btrl %esi, (%rdx) # sched: [9:1.00] 2902; GENERIC-NEXT: btsl %esi, (%rdx) # sched: [9:1.00] 2903; GENERIC-NEXT: btl $7, %edi # sched: [1:0.50] 2904; GENERIC-NEXT: btcl $7, %edi # sched: [1:0.50] 2905; GENERIC-NEXT: btrl $7, %edi # sched: [1:0.50] 2906; GENERIC-NEXT: btsl $7, %edi # sched: [1:0.50] 2907; GENERIC-NEXT: btl $7, (%rdx) # sched: [6:0.50] 2908; GENERIC-NEXT: btcl $7, (%rdx) # sched: [7:1.00] 2909; GENERIC-NEXT: btrl $7, (%rdx) # sched: [7:1.00] 2910; GENERIC-NEXT: btsl $7, (%rdx) # sched: [7:1.00] 2911; GENERIC-NEXT: #NO_APP 2912; GENERIC-NEXT: retq # sched: [1:1.00] 2913; 2914; ATOM-LABEL: test_bt_btc_btr_bts_32: 2915; ATOM: # %bb.0: 2916; ATOM-NEXT: #APP 2917; ATOM-NEXT: btl %esi, %edi # sched: [1:1.00] 2918; ATOM-NEXT: btcl %esi, %edi # sched: [1:1.00] 2919; ATOM-NEXT: btrl %esi, %edi # sched: [1:1.00] 2920; ATOM-NEXT: btsl %esi, %edi # sched: [1:1.00] 2921; ATOM-NEXT: btl %esi, (%rdx) # sched: [9:4.50] 2922; ATOM-NEXT: btcl %esi, (%rdx) # sched: [11:5.50] 2923; ATOM-NEXT: btrl %esi, (%rdx) # sched: [11:5.50] 2924; ATOM-NEXT: btsl %esi, (%rdx) # sched: [11:5.50] 2925; ATOM-NEXT: btl $7, %edi # sched: [1:1.00] 2926; ATOM-NEXT: btcl $7, %edi # sched: [1:1.00] 2927; ATOM-NEXT: btrl $7, %edi # sched: [1:1.00] 2928; ATOM-NEXT: btsl $7, %edi # sched: [1:1.00] 2929; ATOM-NEXT: btl $7, (%rdx) # sched: [1:0.50] 2930; ATOM-NEXT: btcl $7, (%rdx) # sched: [2:1.00] 2931; ATOM-NEXT: btrl $7, (%rdx) # sched: [2:1.00] 2932; ATOM-NEXT: btsl $7, (%rdx) # sched: [2:1.00] 2933; ATOM-NEXT: #NO_APP 2934; ATOM-NEXT: retq # sched: [79:39.50] 2935; 2936; SLM-LABEL: test_bt_btc_btr_bts_32: 2937; SLM: # %bb.0: 2938; SLM-NEXT: #APP 2939; SLM-NEXT: btl %esi, %edi # sched: [1:0.50] 2940; SLM-NEXT: btcl %esi, %edi # sched: [1:0.50] 2941; SLM-NEXT: btrl %esi, %edi # sched: [1:0.50] 2942; SLM-NEXT: btsl %esi, %edi # sched: [1:0.50] 2943; SLM-NEXT: btl %esi, (%rdx) # sched: [4:1.00] 2944; SLM-NEXT: btcl %esi, (%rdx) # sched: [4:2.00] 2945; SLM-NEXT: btrl %esi, (%rdx) # sched: [4:2.00] 2946; SLM-NEXT: btsl %esi, (%rdx) # sched: [4:2.00] 2947; SLM-NEXT: btl $7, %edi # sched: [1:0.50] 2948; SLM-NEXT: btcl $7, %edi # sched: [1:0.50] 2949; SLM-NEXT: btrl $7, %edi # sched: [1:0.50] 2950; SLM-NEXT: btsl $7, %edi # sched: [1:0.50] 2951; SLM-NEXT: btl $7, (%rdx) # sched: [1:0.50] 2952; SLM-NEXT: btcl $7, (%rdx) # sched: [4:2.00] 2953; SLM-NEXT: btrl $7, (%rdx) # sched: [4:2.00] 2954; SLM-NEXT: btsl $7, (%rdx) # sched: [4:2.00] 2955; SLM-NEXT: #NO_APP 2956; SLM-NEXT: retq # sched: [4:1.00] 2957; 2958; SANDY-LABEL: test_bt_btc_btr_bts_32: 2959; SANDY: # %bb.0: 2960; SANDY-NEXT: #APP 2961; SANDY-NEXT: btl %esi, %edi # sched: [1:0.50] 2962; SANDY-NEXT: btcl %esi, %edi # sched: [1:0.50] 2963; SANDY-NEXT: btrl %esi, %edi # sched: [1:0.50] 2964; SANDY-NEXT: btsl %esi, %edi # sched: [1:0.50] 2965; SANDY-NEXT: btl %esi, (%rdx) # sched: [9:1.00] 2966; SANDY-NEXT: btcl %esi, (%rdx) # sched: [9:1.00] 2967; SANDY-NEXT: btrl %esi, (%rdx) # sched: [9:1.00] 2968; SANDY-NEXT: btsl %esi, (%rdx) # sched: [9:1.00] 2969; SANDY-NEXT: btl $7, %edi # sched: [1:0.50] 2970; SANDY-NEXT: btcl $7, %edi # sched: [1:0.50] 2971; SANDY-NEXT: btrl $7, %edi # sched: [1:0.50] 2972; SANDY-NEXT: btsl $7, %edi # sched: [1:0.50] 2973; SANDY-NEXT: btl $7, (%rdx) # sched: [6:0.50] 2974; SANDY-NEXT: btcl $7, (%rdx) # sched: [7:1.00] 2975; SANDY-NEXT: btrl $7, (%rdx) # sched: [7:1.00] 2976; SANDY-NEXT: btsl $7, (%rdx) # sched: [7:1.00] 2977; SANDY-NEXT: #NO_APP 2978; SANDY-NEXT: retq # sched: [1:1.00] 2979; 2980; HASWELL-LABEL: test_bt_btc_btr_bts_32: 2981; HASWELL: # %bb.0: 2982; HASWELL-NEXT: #APP 2983; HASWELL-NEXT: btl %esi, %edi # sched: [1:0.50] 2984; HASWELL-NEXT: btcl %esi, %edi # sched: [1:0.50] 2985; HASWELL-NEXT: btrl %esi, %edi # sched: [1:0.50] 2986; HASWELL-NEXT: btsl %esi, %edi # sched: [1:0.50] 2987; HASWELL-NEXT: btl %esi, (%rdx) # sched: [1:2.50] 2988; HASWELL-NEXT: btcl %esi, (%rdx) # sched: [1:2.75] 2989; HASWELL-NEXT: btrl %esi, (%rdx) # sched: [1:2.75] 2990; HASWELL-NEXT: btsl %esi, (%rdx) # sched: [1:2.75] 2991; HASWELL-NEXT: btl $7, %edi # sched: [1:0.50] 2992; HASWELL-NEXT: btcl $7, %edi # sched: [1:0.50] 2993; HASWELL-NEXT: btrl $7, %edi # sched: [1:0.50] 2994; HASWELL-NEXT: btsl $7, %edi # sched: [1:0.50] 2995; HASWELL-NEXT: btl $7, (%rdx) # sched: [6:0.50] 2996; HASWELL-NEXT: btcl $7, (%rdx) # sched: [7:1.00] 2997; HASWELL-NEXT: btrl $7, (%rdx) # sched: [7:1.00] 2998; HASWELL-NEXT: btsl $7, (%rdx) # sched: [7:1.00] 2999; HASWELL-NEXT: #NO_APP 3000; HASWELL-NEXT: retq # sched: [7:1.00] 3001; 3002; BROADWELL-LABEL: test_bt_btc_btr_bts_32: 3003; BROADWELL: # %bb.0: 3004; BROADWELL-NEXT: #APP 3005; BROADWELL-NEXT: btl %esi, %edi # sched: [1:0.50] 3006; BROADWELL-NEXT: btcl %esi, %edi # sched: [1:0.50] 3007; BROADWELL-NEXT: btrl %esi, %edi # sched: [1:0.50] 3008; BROADWELL-NEXT: btsl %esi, %edi # sched: [1:0.50] 3009; BROADWELL-NEXT: btl %esi, (%rdx) # sched: [6:0.50] 3010; BROADWELL-NEXT: btcl %esi, (%rdx) # sched: [6:1.00] 3011; BROADWELL-NEXT: btrl %esi, (%rdx) # sched: [6:1.00] 3012; BROADWELL-NEXT: btsl %esi, (%rdx) # sched: [6:1.00] 3013; BROADWELL-NEXT: btl $7, %edi # sched: [1:0.50] 3014; BROADWELL-NEXT: btcl $7, %edi # sched: [1:0.50] 3015; BROADWELL-NEXT: btrl $7, %edi # sched: [1:0.50] 3016; BROADWELL-NEXT: btsl $7, %edi # sched: [1:0.50] 3017; BROADWELL-NEXT: btl $7, (%rdx) # sched: [6:0.50] 3018; BROADWELL-NEXT: btcl $7, (%rdx) # sched: [6:1.00] 3019; BROADWELL-NEXT: btrl $7, (%rdx) # sched: [6:1.00] 3020; BROADWELL-NEXT: btsl $7, (%rdx) # sched: [6:1.00] 3021; BROADWELL-NEXT: #NO_APP 3022; BROADWELL-NEXT: retq # sched: [7:1.00] 3023; 3024; SKYLAKE-LABEL: test_bt_btc_btr_bts_32: 3025; SKYLAKE: # %bb.0: 3026; SKYLAKE-NEXT: #APP 3027; SKYLAKE-NEXT: btl %esi, %edi # sched: [1:0.50] 3028; SKYLAKE-NEXT: btcl %esi, %edi # sched: [1:0.50] 3029; SKYLAKE-NEXT: btrl %esi, %edi # sched: [1:0.50] 3030; SKYLAKE-NEXT: btsl %esi, %edi # sched: [1:0.50] 3031; SKYLAKE-NEXT: btl %esi, (%rdx) # sched: [6:0.50] 3032; SKYLAKE-NEXT: btcl %esi, (%rdx) # sched: [6:1.00] 3033; SKYLAKE-NEXT: btrl %esi, (%rdx) # sched: [6:1.00] 3034; SKYLAKE-NEXT: btsl %esi, (%rdx) # sched: [6:1.00] 3035; SKYLAKE-NEXT: btl $7, %edi # sched: [1:0.50] 3036; SKYLAKE-NEXT: btcl $7, %edi # sched: [1:0.50] 3037; SKYLAKE-NEXT: btrl $7, %edi # sched: [1:0.50] 3038; SKYLAKE-NEXT: btsl $7, %edi # sched: [1:0.50] 3039; SKYLAKE-NEXT: btl $7, (%rdx) # sched: [6:0.50] 3040; SKYLAKE-NEXT: btcl $7, (%rdx) # sched: [6:1.00] 3041; SKYLAKE-NEXT: btrl $7, (%rdx) # sched: [6:1.00] 3042; SKYLAKE-NEXT: btsl $7, (%rdx) # sched: [6:1.00] 3043; SKYLAKE-NEXT: #NO_APP 3044; SKYLAKE-NEXT: retq # sched: [7:1.00] 3045; 3046; SKX-LABEL: test_bt_btc_btr_bts_32: 3047; SKX: # %bb.0: 3048; SKX-NEXT: #APP 3049; SKX-NEXT: btl %esi, %edi # sched: [1:0.50] 3050; SKX-NEXT: btcl %esi, %edi # sched: [1:0.50] 3051; SKX-NEXT: btrl %esi, %edi # sched: [1:0.50] 3052; SKX-NEXT: btsl %esi, %edi # sched: [1:0.50] 3053; SKX-NEXT: btl %esi, (%rdx) # sched: [6:0.50] 3054; SKX-NEXT: btcl %esi, (%rdx) # sched: [6:1.00] 3055; SKX-NEXT: btrl %esi, (%rdx) # sched: [6:1.00] 3056; SKX-NEXT: btsl %esi, (%rdx) # sched: [6:1.00] 3057; SKX-NEXT: btl $7, %edi # sched: [1:0.50] 3058; SKX-NEXT: btcl $7, %edi # sched: [1:0.50] 3059; SKX-NEXT: btrl $7, %edi # sched: [1:0.50] 3060; SKX-NEXT: btsl $7, %edi # sched: [1:0.50] 3061; SKX-NEXT: btl $7, (%rdx) # sched: [6:0.50] 3062; SKX-NEXT: btcl $7, (%rdx) # sched: [6:1.00] 3063; SKX-NEXT: btrl $7, (%rdx) # sched: [6:1.00] 3064; SKX-NEXT: btsl $7, (%rdx) # sched: [6:1.00] 3065; SKX-NEXT: #NO_APP 3066; SKX-NEXT: retq # sched: [7:1.00] 3067; 3068; BTVER2-LABEL: test_bt_btc_btr_bts_32: 3069; BTVER2: # %bb.0: 3070; BTVER2-NEXT: #APP 3071; BTVER2-NEXT: btl %esi, %edi # sched: [1:0.50] 3072; BTVER2-NEXT: btcl %esi, %edi # sched: [1:0.50] 3073; BTVER2-NEXT: btrl %esi, %edi # sched: [1:0.50] 3074; BTVER2-NEXT: btsl %esi, %edi # sched: [1:0.50] 3075; BTVER2-NEXT: btl %esi, (%rdx) # sched: [4:1.00] 3076; BTVER2-NEXT: btcl %esi, (%rdx) # sched: [4:1.00] 3077; BTVER2-NEXT: btrl %esi, (%rdx) # sched: [4:1.00] 3078; BTVER2-NEXT: btsl %esi, (%rdx) # sched: [4:1.00] 3079; BTVER2-NEXT: btl $7, %edi # sched: [1:0.50] 3080; BTVER2-NEXT: btcl $7, %edi # sched: [1:0.50] 3081; BTVER2-NEXT: btrl $7, %edi # sched: [1:0.50] 3082; BTVER2-NEXT: btsl $7, %edi # sched: [1:0.50] 3083; BTVER2-NEXT: btl $7, (%rdx) # sched: [1:0.50] 3084; BTVER2-NEXT: btcl $7, (%rdx) # sched: [4:1.00] 3085; BTVER2-NEXT: btrl $7, (%rdx) # sched: [4:1.00] 3086; BTVER2-NEXT: btsl $7, (%rdx) # sched: [4:1.00] 3087; BTVER2-NEXT: #NO_APP 3088; BTVER2-NEXT: retq # sched: [4:1.00] 3089; 3090; ZNVER1-LABEL: test_bt_btc_btr_bts_32: 3091; ZNVER1: # %bb.0: 3092; ZNVER1-NEXT: #APP 3093; ZNVER1-NEXT: btl %esi, %edi # sched: [1:0.25] 3094; ZNVER1-NEXT: btcl %esi, %edi # sched: [2:0.25] 3095; ZNVER1-NEXT: btrl %esi, %edi # sched: [2:0.25] 3096; ZNVER1-NEXT: btsl %esi, %edi # sched: [2:0.25] 3097; ZNVER1-NEXT: btl %esi, (%rdx) # sched: [5:0.50] 3098; ZNVER1-NEXT: btcl %esi, (%rdx) # sched: [6:0.50] 3099; ZNVER1-NEXT: btrl %esi, (%rdx) # sched: [6:0.50] 3100; ZNVER1-NEXT: btsl %esi, (%rdx) # sched: [6:0.50] 3101; ZNVER1-NEXT: btl $7, %edi # sched: [1:0.25] 3102; ZNVER1-NEXT: btcl $7, %edi # sched: [2:0.25] 3103; ZNVER1-NEXT: btrl $7, %edi # sched: [2:0.25] 3104; ZNVER1-NEXT: btsl $7, %edi # sched: [2:0.25] 3105; ZNVER1-NEXT: btl $7, (%rdx) # sched: [5:0.50] 3106; ZNVER1-NEXT: btcl $7, (%rdx) # sched: [6:0.50] 3107; ZNVER1-NEXT: btrl $7, (%rdx) # sched: [6:0.50] 3108; ZNVER1-NEXT: btsl $7, (%rdx) # sched: [6:0.50] 3109; ZNVER1-NEXT: #NO_APP 3110; ZNVER1-NEXT: retq # sched: [1:0.50] 3111 call void asm sideeffect "btl $1, $0 \0A\09 btcl $1, $0 \0A\09 btrl $1, $0 \0A\09 btsl $1, $0 \0A\09 btl $1, $2 \0A\09 btcl $1, $2 \0A\09 btrl $1, $2 \0A\09 btsl $1, $2 \0A\09 btl $3, $0 \0A\09 btcl $3, $0 \0A\09 btrl $3, $0 \0A\09 btsl $3, $0 \0A\09 btl $3, $2 \0A\09 btcl $3, $2 \0A\09 btrl $3, $2 \0A\09 btsl $3, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 3112 ret void 3113} 3114define void @test_bt_btc_btr_bts_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 3115; GENERIC-LABEL: test_bt_btc_btr_bts_64: 3116; GENERIC: # %bb.0: 3117; GENERIC-NEXT: #APP 3118; GENERIC-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3119; GENERIC-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3120; GENERIC-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3121; GENERIC-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3122; GENERIC-NEXT: btq %rsi, (%rdx) # sched: [9:1.00] 3123; GENERIC-NEXT: btcq %rsi, (%rdx) # sched: [9:1.00] 3124; GENERIC-NEXT: btrq %rsi, (%rdx) # sched: [9:1.00] 3125; GENERIC-NEXT: btsq %rsi, (%rdx) # sched: [9:1.00] 3126; GENERIC-NEXT: btq $7, %rdi # sched: [1:0.50] 3127; GENERIC-NEXT: btcq $7, %rdi # sched: [1:0.50] 3128; GENERIC-NEXT: btrq $7, %rdi # sched: [1:0.50] 3129; GENERIC-NEXT: btsq $7, %rdi # sched: [1:0.50] 3130; GENERIC-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3131; GENERIC-NEXT: btcq $7, (%rdx) # sched: [7:1.00] 3132; GENERIC-NEXT: btrq $7, (%rdx) # sched: [7:1.00] 3133; GENERIC-NEXT: btsq $7, (%rdx) # sched: [7:1.00] 3134; GENERIC-NEXT: #NO_APP 3135; GENERIC-NEXT: retq # sched: [1:1.00] 3136; 3137; ATOM-LABEL: test_bt_btc_btr_bts_64: 3138; ATOM: # %bb.0: 3139; ATOM-NEXT: #APP 3140; ATOM-NEXT: btq %rsi, %rdi # sched: [1:1.00] 3141; ATOM-NEXT: btcq %rsi, %rdi # sched: [1:1.00] 3142; ATOM-NEXT: btrq %rsi, %rdi # sched: [1:1.00] 3143; ATOM-NEXT: btsq %rsi, %rdi # sched: [1:1.00] 3144; ATOM-NEXT: btq %rsi, (%rdx) # sched: [9:4.50] 3145; ATOM-NEXT: btcq %rsi, (%rdx) # sched: [11:5.50] 3146; ATOM-NEXT: btrq %rsi, (%rdx) # sched: [11:5.50] 3147; ATOM-NEXT: btsq %rsi, (%rdx) # sched: [11:5.50] 3148; ATOM-NEXT: btq $7, %rdi # sched: [1:1.00] 3149; ATOM-NEXT: btcq $7, %rdi # sched: [1:1.00] 3150; ATOM-NEXT: btrq $7, %rdi # sched: [1:1.00] 3151; ATOM-NEXT: btsq $7, %rdi # sched: [1:1.00] 3152; ATOM-NEXT: btq $7, (%rdx) # sched: [1:0.50] 3153; ATOM-NEXT: btcq $7, (%rdx) # sched: [2:1.00] 3154; ATOM-NEXT: btrq $7, (%rdx) # sched: [2:1.00] 3155; ATOM-NEXT: btsq $7, (%rdx) # sched: [2:1.00] 3156; ATOM-NEXT: #NO_APP 3157; ATOM-NEXT: retq # sched: [79:39.50] 3158; 3159; SLM-LABEL: test_bt_btc_btr_bts_64: 3160; SLM: # %bb.0: 3161; SLM-NEXT: #APP 3162; SLM-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3163; SLM-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3164; SLM-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3165; SLM-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3166; SLM-NEXT: btq %rsi, (%rdx) # sched: [4:1.00] 3167; SLM-NEXT: btcq %rsi, (%rdx) # sched: [4:2.00] 3168; SLM-NEXT: btrq %rsi, (%rdx) # sched: [4:2.00] 3169; SLM-NEXT: btsq %rsi, (%rdx) # sched: [4:2.00] 3170; SLM-NEXT: btq $7, %rdi # sched: [1:0.50] 3171; SLM-NEXT: btcq $7, %rdi # sched: [1:0.50] 3172; SLM-NEXT: btrq $7, %rdi # sched: [1:0.50] 3173; SLM-NEXT: btsq $7, %rdi # sched: [1:0.50] 3174; SLM-NEXT: btq $7, (%rdx) # sched: [1:0.50] 3175; SLM-NEXT: btcq $7, (%rdx) # sched: [4:2.00] 3176; SLM-NEXT: btrq $7, (%rdx) # sched: [4:2.00] 3177; SLM-NEXT: btsq $7, (%rdx) # sched: [4:2.00] 3178; SLM-NEXT: #NO_APP 3179; SLM-NEXT: retq # sched: [4:1.00] 3180; 3181; SANDY-LABEL: test_bt_btc_btr_bts_64: 3182; SANDY: # %bb.0: 3183; SANDY-NEXT: #APP 3184; SANDY-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3185; SANDY-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3186; SANDY-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3187; SANDY-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3188; SANDY-NEXT: btq %rsi, (%rdx) # sched: [9:1.00] 3189; SANDY-NEXT: btcq %rsi, (%rdx) # sched: [9:1.00] 3190; SANDY-NEXT: btrq %rsi, (%rdx) # sched: [9:1.00] 3191; SANDY-NEXT: btsq %rsi, (%rdx) # sched: [9:1.00] 3192; SANDY-NEXT: btq $7, %rdi # sched: [1:0.50] 3193; SANDY-NEXT: btcq $7, %rdi # sched: [1:0.50] 3194; SANDY-NEXT: btrq $7, %rdi # sched: [1:0.50] 3195; SANDY-NEXT: btsq $7, %rdi # sched: [1:0.50] 3196; SANDY-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3197; SANDY-NEXT: btcq $7, (%rdx) # sched: [7:1.00] 3198; SANDY-NEXT: btrq $7, (%rdx) # sched: [7:1.00] 3199; SANDY-NEXT: btsq $7, (%rdx) # sched: [7:1.00] 3200; SANDY-NEXT: #NO_APP 3201; SANDY-NEXT: retq # sched: [1:1.00] 3202; 3203; HASWELL-LABEL: test_bt_btc_btr_bts_64: 3204; HASWELL: # %bb.0: 3205; HASWELL-NEXT: #APP 3206; HASWELL-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3207; HASWELL-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3208; HASWELL-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3209; HASWELL-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3210; HASWELL-NEXT: btq %rsi, (%rdx) # sched: [1:2.50] 3211; HASWELL-NEXT: btcq %rsi, (%rdx) # sched: [1:2.75] 3212; HASWELL-NEXT: btrq %rsi, (%rdx) # sched: [1:2.75] 3213; HASWELL-NEXT: btsq %rsi, (%rdx) # sched: [1:2.75] 3214; HASWELL-NEXT: btq $7, %rdi # sched: [1:0.50] 3215; HASWELL-NEXT: btcq $7, %rdi # sched: [1:0.50] 3216; HASWELL-NEXT: btrq $7, %rdi # sched: [1:0.50] 3217; HASWELL-NEXT: btsq $7, %rdi # sched: [1:0.50] 3218; HASWELL-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3219; HASWELL-NEXT: btcq $7, (%rdx) # sched: [7:1.00] 3220; HASWELL-NEXT: btrq $7, (%rdx) # sched: [7:1.00] 3221; HASWELL-NEXT: btsq $7, (%rdx) # sched: [7:1.00] 3222; HASWELL-NEXT: #NO_APP 3223; HASWELL-NEXT: retq # sched: [7:1.00] 3224; 3225; BROADWELL-LABEL: test_bt_btc_btr_bts_64: 3226; BROADWELL: # %bb.0: 3227; BROADWELL-NEXT: #APP 3228; BROADWELL-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3229; BROADWELL-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3230; BROADWELL-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3231; BROADWELL-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3232; BROADWELL-NEXT: btq %rsi, (%rdx) # sched: [6:0.50] 3233; BROADWELL-NEXT: btcq %rsi, (%rdx) # sched: [6:1.00] 3234; BROADWELL-NEXT: btrq %rsi, (%rdx) # sched: [6:1.00] 3235; BROADWELL-NEXT: btsq %rsi, (%rdx) # sched: [6:1.00] 3236; BROADWELL-NEXT: btq $7, %rdi # sched: [1:0.50] 3237; BROADWELL-NEXT: btcq $7, %rdi # sched: [1:0.50] 3238; BROADWELL-NEXT: btrq $7, %rdi # sched: [1:0.50] 3239; BROADWELL-NEXT: btsq $7, %rdi # sched: [1:0.50] 3240; BROADWELL-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3241; BROADWELL-NEXT: btcq $7, (%rdx) # sched: [6:1.00] 3242; BROADWELL-NEXT: btrq $7, (%rdx) # sched: [6:1.00] 3243; BROADWELL-NEXT: btsq $7, (%rdx) # sched: [6:1.00] 3244; BROADWELL-NEXT: #NO_APP 3245; BROADWELL-NEXT: retq # sched: [7:1.00] 3246; 3247; SKYLAKE-LABEL: test_bt_btc_btr_bts_64: 3248; SKYLAKE: # %bb.0: 3249; SKYLAKE-NEXT: #APP 3250; SKYLAKE-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3251; SKYLAKE-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3252; SKYLAKE-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3253; SKYLAKE-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3254; SKYLAKE-NEXT: btq %rsi, (%rdx) # sched: [6:0.50] 3255; SKYLAKE-NEXT: btcq %rsi, (%rdx) # sched: [6:1.00] 3256; SKYLAKE-NEXT: btrq %rsi, (%rdx) # sched: [6:1.00] 3257; SKYLAKE-NEXT: btsq %rsi, (%rdx) # sched: [6:1.00] 3258; SKYLAKE-NEXT: btq $7, %rdi # sched: [1:0.50] 3259; SKYLAKE-NEXT: btcq $7, %rdi # sched: [1:0.50] 3260; SKYLAKE-NEXT: btrq $7, %rdi # sched: [1:0.50] 3261; SKYLAKE-NEXT: btsq $7, %rdi # sched: [1:0.50] 3262; SKYLAKE-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3263; SKYLAKE-NEXT: btcq $7, (%rdx) # sched: [6:1.00] 3264; SKYLAKE-NEXT: btrq $7, (%rdx) # sched: [6:1.00] 3265; SKYLAKE-NEXT: btsq $7, (%rdx) # sched: [6:1.00] 3266; SKYLAKE-NEXT: #NO_APP 3267; SKYLAKE-NEXT: retq # sched: [7:1.00] 3268; 3269; SKX-LABEL: test_bt_btc_btr_bts_64: 3270; SKX: # %bb.0: 3271; SKX-NEXT: #APP 3272; SKX-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3273; SKX-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3274; SKX-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3275; SKX-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3276; SKX-NEXT: btq %rsi, (%rdx) # sched: [6:0.50] 3277; SKX-NEXT: btcq %rsi, (%rdx) # sched: [6:1.00] 3278; SKX-NEXT: btrq %rsi, (%rdx) # sched: [6:1.00] 3279; SKX-NEXT: btsq %rsi, (%rdx) # sched: [6:1.00] 3280; SKX-NEXT: btq $7, %rdi # sched: [1:0.50] 3281; SKX-NEXT: btcq $7, %rdi # sched: [1:0.50] 3282; SKX-NEXT: btrq $7, %rdi # sched: [1:0.50] 3283; SKX-NEXT: btsq $7, %rdi # sched: [1:0.50] 3284; SKX-NEXT: btq $7, (%rdx) # sched: [6:0.50] 3285; SKX-NEXT: btcq $7, (%rdx) # sched: [6:1.00] 3286; SKX-NEXT: btrq $7, (%rdx) # sched: [6:1.00] 3287; SKX-NEXT: btsq $7, (%rdx) # sched: [6:1.00] 3288; SKX-NEXT: #NO_APP 3289; SKX-NEXT: retq # sched: [7:1.00] 3290; 3291; BTVER2-LABEL: test_bt_btc_btr_bts_64: 3292; BTVER2: # %bb.0: 3293; BTVER2-NEXT: #APP 3294; BTVER2-NEXT: btq %rsi, %rdi # sched: [1:0.50] 3295; BTVER2-NEXT: btcq %rsi, %rdi # sched: [1:0.50] 3296; BTVER2-NEXT: btrq %rsi, %rdi # sched: [1:0.50] 3297; BTVER2-NEXT: btsq %rsi, %rdi # sched: [1:0.50] 3298; BTVER2-NEXT: btq %rsi, (%rdx) # sched: [4:1.00] 3299; BTVER2-NEXT: btcq %rsi, (%rdx) # sched: [4:1.00] 3300; BTVER2-NEXT: btrq %rsi, (%rdx) # sched: [4:1.00] 3301; BTVER2-NEXT: btsq %rsi, (%rdx) # sched: [4:1.00] 3302; BTVER2-NEXT: btq $7, %rdi # sched: [1:0.50] 3303; BTVER2-NEXT: btcq $7, %rdi # sched: [1:0.50] 3304; BTVER2-NEXT: btrq $7, %rdi # sched: [1:0.50] 3305; BTVER2-NEXT: btsq $7, %rdi # sched: [1:0.50] 3306; BTVER2-NEXT: btq $7, (%rdx) # sched: [1:0.50] 3307; BTVER2-NEXT: btcq $7, (%rdx) # sched: [4:1.00] 3308; BTVER2-NEXT: btrq $7, (%rdx) # sched: [4:1.00] 3309; BTVER2-NEXT: btsq $7, (%rdx) # sched: [4:1.00] 3310; BTVER2-NEXT: #NO_APP 3311; BTVER2-NEXT: retq # sched: [4:1.00] 3312; 3313; ZNVER1-LABEL: test_bt_btc_btr_bts_64: 3314; ZNVER1: # %bb.0: 3315; ZNVER1-NEXT: #APP 3316; ZNVER1-NEXT: btq %rsi, %rdi # sched: [1:0.25] 3317; ZNVER1-NEXT: btcq %rsi, %rdi # sched: [2:0.25] 3318; ZNVER1-NEXT: btrq %rsi, %rdi # sched: [2:0.25] 3319; ZNVER1-NEXT: btsq %rsi, %rdi # sched: [2:0.25] 3320; ZNVER1-NEXT: btq %rsi, (%rdx) # sched: [5:0.50] 3321; ZNVER1-NEXT: btcq %rsi, (%rdx) # sched: [6:0.50] 3322; ZNVER1-NEXT: btrq %rsi, (%rdx) # sched: [6:0.50] 3323; ZNVER1-NEXT: btsq %rsi, (%rdx) # sched: [6:0.50] 3324; ZNVER1-NEXT: btq $7, %rdi # sched: [1:0.25] 3325; ZNVER1-NEXT: btcq $7, %rdi # sched: [2:0.25] 3326; ZNVER1-NEXT: btrq $7, %rdi # sched: [2:0.25] 3327; ZNVER1-NEXT: btsq $7, %rdi # sched: [2:0.25] 3328; ZNVER1-NEXT: btq $7, (%rdx) # sched: [5:0.50] 3329; ZNVER1-NEXT: btcq $7, (%rdx) # sched: [6:0.50] 3330; ZNVER1-NEXT: btrq $7, (%rdx) # sched: [6:0.50] 3331; ZNVER1-NEXT: btsq $7, (%rdx) # sched: [6:0.50] 3332; ZNVER1-NEXT: #NO_APP 3333; ZNVER1-NEXT: retq # sched: [1:0.50] 3334 call void asm sideeffect "btq $1, $0 \0A\09 btcq $1, $0 \0A\09 btrq $1, $0 \0A\09 btsq $1, $0 \0A\09 btq $1, $2 \0A\09 btcq $1, $2 \0A\09 btrq $1, $2 \0A\09 btsq $1, $2 \0A\09 btq $3, $0 \0A\09 btcq $3, $0 \0A\09 btrq $3, $0 \0A\09 btsq $3, $0 \0A\09 btq $3, $2 \0A\09 btcq $3, $2 \0A\09 btrq $3, $2 \0A\09 btsq $3, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 3335 ret void 3336} 3337 3338; TODO - test_call 3339 3340define void @test_cbw_cdq_cdqe_cqo_cwd_cwde() optsize { 3341; GENERIC-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3342; GENERIC: # %bb.0: 3343; GENERIC-NEXT: #APP 3344; GENERIC-NEXT: cbtw # sched: [1:0.33] 3345; GENERIC-NEXT: cltd # sched: [1:0.50] 3346; GENERIC-NEXT: cltq # sched: [1:0.33] 3347; GENERIC-NEXT: cqto # sched: [1:0.50] 3348; GENERIC-NEXT: cwtd # sched: [2:1.00] 3349; GENERIC-NEXT: cwtl # sched: [1:0.33] 3350; GENERIC-NEXT: #NO_APP 3351; GENERIC-NEXT: retq # sched: [1:1.00] 3352; 3353; ATOM-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3354; ATOM: # %bb.0: 3355; ATOM-NEXT: #APP 3356; ATOM-NEXT: cbtw # sched: [4:2.00] 3357; ATOM-NEXT: cltd # sched: [4:2.00] 3358; ATOM-NEXT: cltq # sched: [4:2.00] 3359; ATOM-NEXT: cqto # sched: [4:2.00] 3360; ATOM-NEXT: cwtd # sched: [4:2.00] 3361; ATOM-NEXT: cwtl # sched: [4:2.00] 3362; ATOM-NEXT: #NO_APP 3363; ATOM-NEXT: retq # sched: [79:39.50] 3364; 3365; SLM-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3366; SLM: # %bb.0: 3367; SLM-NEXT: #APP 3368; SLM-NEXT: cbtw # sched: [1:0.50] 3369; SLM-NEXT: cltd # sched: [1:0.50] 3370; SLM-NEXT: cltq # sched: [1:0.50] 3371; SLM-NEXT: cqto # sched: [1:0.50] 3372; SLM-NEXT: cwtd # sched: [1:0.50] 3373; SLM-NEXT: cwtl # sched: [1:0.50] 3374; SLM-NEXT: #NO_APP 3375; SLM-NEXT: retq # sched: [4:1.00] 3376; 3377; SANDY-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3378; SANDY: # %bb.0: 3379; SANDY-NEXT: #APP 3380; SANDY-NEXT: cbtw # sched: [1:0.33] 3381; SANDY-NEXT: cltd # sched: [1:0.50] 3382; SANDY-NEXT: cltq # sched: [1:0.33] 3383; SANDY-NEXT: cqto # sched: [1:0.50] 3384; SANDY-NEXT: cwtd # sched: [2:1.00] 3385; SANDY-NEXT: cwtl # sched: [1:0.33] 3386; SANDY-NEXT: #NO_APP 3387; SANDY-NEXT: retq # sched: [1:1.00] 3388; 3389; HASWELL-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3390; HASWELL: # %bb.0: 3391; HASWELL-NEXT: #APP 3392; HASWELL-NEXT: cbtw # sched: [1:0.25] 3393; HASWELL-NEXT: cltd # sched: [1:0.50] 3394; HASWELL-NEXT: cltq # sched: [1:0.25] 3395; HASWELL-NEXT: cqto # sched: [1:0.50] 3396; HASWELL-NEXT: cwtd # sched: [2:0.50] 3397; HASWELL-NEXT: cwtl # sched: [1:0.25] 3398; HASWELL-NEXT: #NO_APP 3399; HASWELL-NEXT: retq # sched: [7:1.00] 3400; 3401; BROADWELL-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3402; BROADWELL: # %bb.0: 3403; BROADWELL-NEXT: #APP 3404; BROADWELL-NEXT: cbtw # sched: [1:0.25] 3405; BROADWELL-NEXT: cltd # sched: [1:0.50] 3406; BROADWELL-NEXT: cltq # sched: [1:0.25] 3407; BROADWELL-NEXT: cqto # sched: [1:0.50] 3408; BROADWELL-NEXT: cwtd # sched: [2:0.50] 3409; BROADWELL-NEXT: cwtl # sched: [1:0.25] 3410; BROADWELL-NEXT: #NO_APP 3411; BROADWELL-NEXT: retq # sched: [7:1.00] 3412; 3413; SKYLAKE-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3414; SKYLAKE: # %bb.0: 3415; SKYLAKE-NEXT: #APP 3416; SKYLAKE-NEXT: cbtw # sched: [1:0.25] 3417; SKYLAKE-NEXT: cltd # sched: [1:0.50] 3418; SKYLAKE-NEXT: cltq # sched: [1:0.25] 3419; SKYLAKE-NEXT: cqto # sched: [1:0.50] 3420; SKYLAKE-NEXT: cwtd # sched: [2:0.50] 3421; SKYLAKE-NEXT: cwtl # sched: [1:0.25] 3422; SKYLAKE-NEXT: #NO_APP 3423; SKYLAKE-NEXT: retq # sched: [7:1.00] 3424; 3425; SKX-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3426; SKX: # %bb.0: 3427; SKX-NEXT: #APP 3428; SKX-NEXT: cbtw # sched: [1:0.25] 3429; SKX-NEXT: cltd # sched: [1:0.50] 3430; SKX-NEXT: cltq # sched: [1:0.25] 3431; SKX-NEXT: cqto # sched: [1:0.50] 3432; SKX-NEXT: cwtd # sched: [2:0.50] 3433; SKX-NEXT: cwtl # sched: [1:0.25] 3434; SKX-NEXT: #NO_APP 3435; SKX-NEXT: retq # sched: [7:1.00] 3436; 3437; BTVER2-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3438; BTVER2: # %bb.0: 3439; BTVER2-NEXT: #APP 3440; BTVER2-NEXT: cbtw # sched: [1:0.50] 3441; BTVER2-NEXT: cltd # sched: [1:0.50] 3442; BTVER2-NEXT: cltq # sched: [1:0.50] 3443; BTVER2-NEXT: cqto # sched: [1:0.50] 3444; BTVER2-NEXT: cwtd # sched: [1:0.50] 3445; BTVER2-NEXT: cwtl # sched: [1:0.50] 3446; BTVER2-NEXT: #NO_APP 3447; BTVER2-NEXT: retq # sched: [4:1.00] 3448; 3449; ZNVER1-LABEL: test_cbw_cdq_cdqe_cqo_cwd_cwde: 3450; ZNVER1: # %bb.0: 3451; ZNVER1-NEXT: #APP 3452; ZNVER1-NEXT: cbtw # sched: [1:0.25] 3453; ZNVER1-NEXT: cltd # sched: [1:0.25] 3454; ZNVER1-NEXT: cltq # sched: [1:0.25] 3455; ZNVER1-NEXT: cqto # sched: [1:0.25] 3456; ZNVER1-NEXT: cwtd # sched: [1:0.25] 3457; ZNVER1-NEXT: cwtl # sched: [1:0.25] 3458; ZNVER1-NEXT: #NO_APP 3459; ZNVER1-NEXT: retq # sched: [1:0.50] 3460 tail call void asm "cbw \0A\09 cdq \0A\09 cdqe \0A\09 cqo \0A\09 cwd \0A\09 cwde", ""() nounwind 3461 ret void 3462} 3463 3464define void @test_clc_cld_cmc() optsize { 3465; GENERIC-LABEL: test_clc_cld_cmc: 3466; GENERIC: # %bb.0: 3467; GENERIC-NEXT: #APP 3468; GENERIC-NEXT: clc # sched: [1:0.25] 3469; GENERIC-NEXT: cld # sched: [1:0.33] 3470; GENERIC-NEXT: cmc # sched: [1:0.33] 3471; GENERIC-NEXT: #NO_APP 3472; GENERIC-NEXT: retq # sched: [1:1.00] 3473; 3474; ATOM-LABEL: test_clc_cld_cmc: 3475; ATOM: # %bb.0: 3476; ATOM-NEXT: #APP 3477; ATOM-NEXT: clc # sched: [1:0.50] 3478; ATOM-NEXT: cld # sched: [3:1.50] 3479; ATOM-NEXT: cmc # sched: [1:0.50] 3480; ATOM-NEXT: #NO_APP 3481; ATOM-NEXT: retq # sched: [79:39.50] 3482; 3483; SLM-LABEL: test_clc_cld_cmc: 3484; SLM: # %bb.0: 3485; SLM-NEXT: #APP 3486; SLM-NEXT: clc # sched: [1:0.50] 3487; SLM-NEXT: cld # sched: [1:0.50] 3488; SLM-NEXT: cmc # sched: [1:0.50] 3489; SLM-NEXT: #NO_APP 3490; SLM-NEXT: retq # sched: [4:1.00] 3491; 3492; SANDY-LABEL: test_clc_cld_cmc: 3493; SANDY: # %bb.0: 3494; SANDY-NEXT: #APP 3495; SANDY-NEXT: clc # sched: [1:0.25] 3496; SANDY-NEXT: cld # sched: [1:0.33] 3497; SANDY-NEXT: cmc # sched: [1:0.33] 3498; SANDY-NEXT: #NO_APP 3499; SANDY-NEXT: retq # sched: [1:1.00] 3500; 3501; HASWELL-LABEL: test_clc_cld_cmc: 3502; HASWELL: # %bb.0: 3503; HASWELL-NEXT: #APP 3504; HASWELL-NEXT: clc # sched: [1:0.25] 3505; HASWELL-NEXT: cld # sched: [3:1.00] 3506; HASWELL-NEXT: cmc # sched: [1:0.25] 3507; HASWELL-NEXT: #NO_APP 3508; HASWELL-NEXT: retq # sched: [7:1.00] 3509; 3510; BROADWELL-LABEL: test_clc_cld_cmc: 3511; BROADWELL: # %bb.0: 3512; BROADWELL-NEXT: #APP 3513; BROADWELL-NEXT: clc # sched: [1:0.25] 3514; BROADWELL-NEXT: cld # sched: [3:1.00] 3515; BROADWELL-NEXT: cmc # sched: [1:0.25] 3516; BROADWELL-NEXT: #NO_APP 3517; BROADWELL-NEXT: retq # sched: [7:1.00] 3518; 3519; SKYLAKE-LABEL: test_clc_cld_cmc: 3520; SKYLAKE: # %bb.0: 3521; SKYLAKE-NEXT: #APP 3522; SKYLAKE-NEXT: clc # sched: [1:0.17] 3523; SKYLAKE-NEXT: cld # sched: [3:1.00] 3524; SKYLAKE-NEXT: cmc # sched: [1:0.25] 3525; SKYLAKE-NEXT: #NO_APP 3526; SKYLAKE-NEXT: retq # sched: [7:1.00] 3527; 3528; SKX-LABEL: test_clc_cld_cmc: 3529; SKX: # %bb.0: 3530; SKX-NEXT: #APP 3531; SKX-NEXT: clc # sched: [1:0.17] 3532; SKX-NEXT: cld # sched: [3:1.00] 3533; SKX-NEXT: cmc # sched: [1:0.25] 3534; SKX-NEXT: #NO_APP 3535; SKX-NEXT: retq # sched: [7:1.00] 3536; 3537; BTVER2-LABEL: test_clc_cld_cmc: 3538; BTVER2: # %bb.0: 3539; BTVER2-NEXT: #APP 3540; BTVER2-NEXT: clc # sched: [1:0.50] 3541; BTVER2-NEXT: cld # sched: [1:0.50] 3542; BTVER2-NEXT: cmc # sched: [1:0.50] 3543; BTVER2-NEXT: #NO_APP 3544; BTVER2-NEXT: retq # sched: [4:1.00] 3545; 3546; ZNVER1-LABEL: test_clc_cld_cmc: 3547; ZNVER1: # %bb.0: 3548; ZNVER1-NEXT: #APP 3549; ZNVER1-NEXT: clc # sched: [1:0.25] 3550; ZNVER1-NEXT: cld # sched: [1:0.25] 3551; ZNVER1-NEXT: cmc # sched: [1:0.25] 3552; ZNVER1-NEXT: #NO_APP 3553; ZNVER1-NEXT: retq # sched: [1:0.50] 3554 tail call void asm "clc \0A\09 cld \0A\09 cmc", ""() nounwind 3555 ret void 3556} 3557 3558define void @test_cmp_8(i8 %a0, i8* %a1) optsize { 3559; GENERIC-LABEL: test_cmp_8: 3560; GENERIC: # %bb.0: 3561; GENERIC-NEXT: #APP 3562; GENERIC-NEXT: cmpb $7, %al # sched: [1:0.33] 3563; GENERIC-NEXT: cmpb $7, %dil # sched: [1:0.33] 3564; GENERIC-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3565; GENERIC-NEXT: cmpb %dil, %dil # sched: [1:0.33] 3566; GENERIC-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3567; GENERIC-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3568; GENERIC-NEXT: #NO_APP 3569; GENERIC-NEXT: retq # sched: [1:1.00] 3570; 3571; ATOM-LABEL: test_cmp_8: 3572; ATOM: # %bb.0: 3573; ATOM-NEXT: #APP 3574; ATOM-NEXT: cmpb $7, %al # sched: [1:0.50] 3575; ATOM-NEXT: cmpb $7, %dil # sched: [1:0.50] 3576; ATOM-NEXT: cmpb $7, (%rsi) # sched: [1:1.00] 3577; ATOM-NEXT: cmpb %dil, %dil # sched: [1:0.50] 3578; ATOM-NEXT: cmpb %dil, (%rsi) # sched: [1:1.00] 3579; ATOM-NEXT: cmpb (%rsi), %dil # sched: [1:1.00] 3580; ATOM-NEXT: #NO_APP 3581; ATOM-NEXT: retq # sched: [79:39.50] 3582; 3583; SLM-LABEL: test_cmp_8: 3584; SLM: # %bb.0: 3585; SLM-NEXT: #APP 3586; SLM-NEXT: cmpb $7, %al # sched: [1:0.50] 3587; SLM-NEXT: cmpb $7, %dil # sched: [1:0.50] 3588; SLM-NEXT: cmpb $7, (%rsi) # sched: [4:1.00] 3589; SLM-NEXT: cmpb %dil, %dil # sched: [1:0.50] 3590; SLM-NEXT: cmpb %dil, (%rsi) # sched: [4:1.00] 3591; SLM-NEXT: cmpb (%rsi), %dil # sched: [4:1.00] 3592; SLM-NEXT: #NO_APP 3593; SLM-NEXT: retq # sched: [4:1.00] 3594; 3595; SANDY-LABEL: test_cmp_8: 3596; SANDY: # %bb.0: 3597; SANDY-NEXT: #APP 3598; SANDY-NEXT: cmpb $7, %al # sched: [1:0.33] 3599; SANDY-NEXT: cmpb $7, %dil # sched: [1:0.33] 3600; SANDY-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3601; SANDY-NEXT: cmpb %dil, %dil # sched: [1:0.33] 3602; SANDY-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3603; SANDY-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3604; SANDY-NEXT: #NO_APP 3605; SANDY-NEXT: retq # sched: [1:1.00] 3606; 3607; HASWELL-LABEL: test_cmp_8: 3608; HASWELL: # %bb.0: 3609; HASWELL-NEXT: #APP 3610; HASWELL-NEXT: cmpb $7, %al # sched: [1:0.25] 3611; HASWELL-NEXT: cmpb $7, %dil # sched: [1:0.25] 3612; HASWELL-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3613; HASWELL-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3614; HASWELL-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3615; HASWELL-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3616; HASWELL-NEXT: #NO_APP 3617; HASWELL-NEXT: retq # sched: [7:1.00] 3618; 3619; BROADWELL-LABEL: test_cmp_8: 3620; BROADWELL: # %bb.0: 3621; BROADWELL-NEXT: #APP 3622; BROADWELL-NEXT: cmpb $7, %al # sched: [1:0.25] 3623; BROADWELL-NEXT: cmpb $7, %dil # sched: [1:0.25] 3624; BROADWELL-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3625; BROADWELL-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3626; BROADWELL-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3627; BROADWELL-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3628; BROADWELL-NEXT: #NO_APP 3629; BROADWELL-NEXT: retq # sched: [7:1.00] 3630; 3631; SKYLAKE-LABEL: test_cmp_8: 3632; SKYLAKE: # %bb.0: 3633; SKYLAKE-NEXT: #APP 3634; SKYLAKE-NEXT: cmpb $7, %al # sched: [1:0.25] 3635; SKYLAKE-NEXT: cmpb $7, %dil # sched: [1:0.25] 3636; SKYLAKE-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3637; SKYLAKE-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3638; SKYLAKE-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3639; SKYLAKE-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3640; SKYLAKE-NEXT: #NO_APP 3641; SKYLAKE-NEXT: retq # sched: [7:1.00] 3642; 3643; SKX-LABEL: test_cmp_8: 3644; SKX: # %bb.0: 3645; SKX-NEXT: #APP 3646; SKX-NEXT: cmpb $7, %al # sched: [1:0.25] 3647; SKX-NEXT: cmpb $7, %dil # sched: [1:0.25] 3648; SKX-NEXT: cmpb $7, (%rsi) # sched: [6:0.50] 3649; SKX-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3650; SKX-NEXT: cmpb %dil, (%rsi) # sched: [6:0.50] 3651; SKX-NEXT: cmpb (%rsi), %dil # sched: [6:0.50] 3652; SKX-NEXT: #NO_APP 3653; SKX-NEXT: retq # sched: [7:1.00] 3654; 3655; BTVER2-LABEL: test_cmp_8: 3656; BTVER2: # %bb.0: 3657; BTVER2-NEXT: #APP 3658; BTVER2-NEXT: cmpb $7, %al # sched: [1:0.50] 3659; BTVER2-NEXT: cmpb $7, %dil # sched: [1:0.50] 3660; BTVER2-NEXT: cmpb $7, (%rsi) # sched: [4:1.00] 3661; BTVER2-NEXT: cmpb %dil, %dil # sched: [1:0.50] 3662; BTVER2-NEXT: cmpb %dil, (%rsi) # sched: [4:1.00] 3663; BTVER2-NEXT: cmpb (%rsi), %dil # sched: [4:1.00] 3664; BTVER2-NEXT: #NO_APP 3665; BTVER2-NEXT: retq # sched: [4:1.00] 3666; 3667; ZNVER1-LABEL: test_cmp_8: 3668; ZNVER1: # %bb.0: 3669; ZNVER1-NEXT: #APP 3670; ZNVER1-NEXT: cmpb $7, %al # sched: [1:0.25] 3671; ZNVER1-NEXT: cmpb $7, %dil # sched: [1:0.25] 3672; ZNVER1-NEXT: cmpb $7, (%rsi) # sched: [5:0.50] 3673; ZNVER1-NEXT: cmpb %dil, %dil # sched: [1:0.25] 3674; ZNVER1-NEXT: cmpb %dil, (%rsi) # sched: [5:0.50] 3675; ZNVER1-NEXT: cmpb (%rsi), %dil # sched: [5:0.50] 3676; ZNVER1-NEXT: #NO_APP 3677; ZNVER1-NEXT: retq # sched: [1:0.50] 3678 tail call void asm "cmpb $2, %AL \0A\09 cmpb $2, $0 \0A\09 cmpb $2, $1 \0A\09 cmpb $0, $0 \0A\09 cmpb $0, $1 \0A\09 cmpb $1, $0", "r,*m,i"(i8 %a0, i8* %a1, i8 7) nounwind 3679 ret void 3680} 3681define void @test_cmp_16(i16 %a0, i16* %a1) optsize { 3682; GENERIC-LABEL: test_cmp_16: 3683; GENERIC: # %bb.0: 3684; GENERIC-NEXT: #APP 3685; GENERIC-NEXT: cmpw $511, %ax # imm = 0x1FF 3686; GENERIC-NEXT: # sched: [1:0.33] 3687; GENERIC-NEXT: cmpw $511, %di # imm = 0x1FF 3688; GENERIC-NEXT: # sched: [1:0.33] 3689; GENERIC-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3690; GENERIC-NEXT: # sched: [6:0.50] 3691; GENERIC-NEXT: cmpw $7, %di # sched: [1:0.33] 3692; GENERIC-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3693; GENERIC-NEXT: cmpw %di, %di # sched: [1:0.33] 3694; GENERIC-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3695; GENERIC-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3696; GENERIC-NEXT: #NO_APP 3697; GENERIC-NEXT: retq # sched: [1:1.00] 3698; 3699; ATOM-LABEL: test_cmp_16: 3700; ATOM: # %bb.0: 3701; ATOM-NEXT: #APP 3702; ATOM-NEXT: cmpw $511, %ax # imm = 0x1FF 3703; ATOM-NEXT: # sched: [1:0.50] 3704; ATOM-NEXT: cmpw $511, %di # imm = 0x1FF 3705; ATOM-NEXT: # sched: [1:0.50] 3706; ATOM-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3707; ATOM-NEXT: # sched: [1:1.00] 3708; ATOM-NEXT: cmpw $7, %di # sched: [1:0.50] 3709; ATOM-NEXT: cmpw $7, (%rsi) # sched: [1:1.00] 3710; ATOM-NEXT: cmpw %di, %di # sched: [1:0.50] 3711; ATOM-NEXT: cmpw %di, (%rsi) # sched: [1:1.00] 3712; ATOM-NEXT: cmpw (%rsi), %di # sched: [1:1.00] 3713; ATOM-NEXT: #NO_APP 3714; ATOM-NEXT: retq # sched: [79:39.50] 3715; 3716; SLM-LABEL: test_cmp_16: 3717; SLM: # %bb.0: 3718; SLM-NEXT: #APP 3719; SLM-NEXT: cmpw $511, %ax # imm = 0x1FF 3720; SLM-NEXT: # sched: [1:0.50] 3721; SLM-NEXT: cmpw $511, %di # imm = 0x1FF 3722; SLM-NEXT: # sched: [1:0.50] 3723; SLM-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3724; SLM-NEXT: # sched: [4:1.00] 3725; SLM-NEXT: cmpw $7, %di # sched: [1:0.50] 3726; SLM-NEXT: cmpw $7, (%rsi) # sched: [4:1.00] 3727; SLM-NEXT: cmpw %di, %di # sched: [1:0.50] 3728; SLM-NEXT: cmpw %di, (%rsi) # sched: [4:1.00] 3729; SLM-NEXT: cmpw (%rsi), %di # sched: [4:1.00] 3730; SLM-NEXT: #NO_APP 3731; SLM-NEXT: retq # sched: [4:1.00] 3732; 3733; SANDY-LABEL: test_cmp_16: 3734; SANDY: # %bb.0: 3735; SANDY-NEXT: #APP 3736; SANDY-NEXT: cmpw $511, %ax # imm = 0x1FF 3737; SANDY-NEXT: # sched: [1:0.33] 3738; SANDY-NEXT: cmpw $511, %di # imm = 0x1FF 3739; SANDY-NEXT: # sched: [1:0.33] 3740; SANDY-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3741; SANDY-NEXT: # sched: [6:0.50] 3742; SANDY-NEXT: cmpw $7, %di # sched: [1:0.33] 3743; SANDY-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3744; SANDY-NEXT: cmpw %di, %di # sched: [1:0.33] 3745; SANDY-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3746; SANDY-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3747; SANDY-NEXT: #NO_APP 3748; SANDY-NEXT: retq # sched: [1:1.00] 3749; 3750; HASWELL-LABEL: test_cmp_16: 3751; HASWELL: # %bb.0: 3752; HASWELL-NEXT: #APP 3753; HASWELL-NEXT: cmpw $511, %ax # imm = 0x1FF 3754; HASWELL-NEXT: # sched: [1:0.25] 3755; HASWELL-NEXT: cmpw $511, %di # imm = 0x1FF 3756; HASWELL-NEXT: # sched: [1:0.25] 3757; HASWELL-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3758; HASWELL-NEXT: # sched: [6:0.50] 3759; HASWELL-NEXT: cmpw $7, %di # sched: [1:0.25] 3760; HASWELL-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3761; HASWELL-NEXT: cmpw %di, %di # sched: [1:0.25] 3762; HASWELL-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3763; HASWELL-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3764; HASWELL-NEXT: #NO_APP 3765; HASWELL-NEXT: retq # sched: [7:1.00] 3766; 3767; BROADWELL-LABEL: test_cmp_16: 3768; BROADWELL: # %bb.0: 3769; BROADWELL-NEXT: #APP 3770; BROADWELL-NEXT: cmpw $511, %ax # imm = 0x1FF 3771; BROADWELL-NEXT: # sched: [1:0.25] 3772; BROADWELL-NEXT: cmpw $511, %di # imm = 0x1FF 3773; BROADWELL-NEXT: # sched: [1:0.25] 3774; BROADWELL-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3775; BROADWELL-NEXT: # sched: [6:0.50] 3776; BROADWELL-NEXT: cmpw $7, %di # sched: [1:0.25] 3777; BROADWELL-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3778; BROADWELL-NEXT: cmpw %di, %di # sched: [1:0.25] 3779; BROADWELL-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3780; BROADWELL-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3781; BROADWELL-NEXT: #NO_APP 3782; BROADWELL-NEXT: retq # sched: [7:1.00] 3783; 3784; SKYLAKE-LABEL: test_cmp_16: 3785; SKYLAKE: # %bb.0: 3786; SKYLAKE-NEXT: #APP 3787; SKYLAKE-NEXT: cmpw $511, %ax # imm = 0x1FF 3788; SKYLAKE-NEXT: # sched: [1:0.25] 3789; SKYLAKE-NEXT: cmpw $511, %di # imm = 0x1FF 3790; SKYLAKE-NEXT: # sched: [1:0.25] 3791; SKYLAKE-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3792; SKYLAKE-NEXT: # sched: [6:0.50] 3793; SKYLAKE-NEXT: cmpw $7, %di # sched: [1:0.25] 3794; SKYLAKE-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3795; SKYLAKE-NEXT: cmpw %di, %di # sched: [1:0.25] 3796; SKYLAKE-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3797; SKYLAKE-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3798; SKYLAKE-NEXT: #NO_APP 3799; SKYLAKE-NEXT: retq # sched: [7:1.00] 3800; 3801; SKX-LABEL: test_cmp_16: 3802; SKX: # %bb.0: 3803; SKX-NEXT: #APP 3804; SKX-NEXT: cmpw $511, %ax # imm = 0x1FF 3805; SKX-NEXT: # sched: [1:0.25] 3806; SKX-NEXT: cmpw $511, %di # imm = 0x1FF 3807; SKX-NEXT: # sched: [1:0.25] 3808; SKX-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3809; SKX-NEXT: # sched: [6:0.50] 3810; SKX-NEXT: cmpw $7, %di # sched: [1:0.25] 3811; SKX-NEXT: cmpw $7, (%rsi) # sched: [6:0.50] 3812; SKX-NEXT: cmpw %di, %di # sched: [1:0.25] 3813; SKX-NEXT: cmpw %di, (%rsi) # sched: [6:0.50] 3814; SKX-NEXT: cmpw (%rsi), %di # sched: [6:0.50] 3815; SKX-NEXT: #NO_APP 3816; SKX-NEXT: retq # sched: [7:1.00] 3817; 3818; BTVER2-LABEL: test_cmp_16: 3819; BTVER2: # %bb.0: 3820; BTVER2-NEXT: #APP 3821; BTVER2-NEXT: cmpw $511, %ax # imm = 0x1FF 3822; BTVER2-NEXT: # sched: [1:0.50] 3823; BTVER2-NEXT: cmpw $511, %di # imm = 0x1FF 3824; BTVER2-NEXT: # sched: [1:0.50] 3825; BTVER2-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3826; BTVER2-NEXT: # sched: [4:1.00] 3827; BTVER2-NEXT: cmpw $7, %di # sched: [1:0.50] 3828; BTVER2-NEXT: cmpw $7, (%rsi) # sched: [4:1.00] 3829; BTVER2-NEXT: cmpw %di, %di # sched: [1:0.50] 3830; BTVER2-NEXT: cmpw %di, (%rsi) # sched: [4:1.00] 3831; BTVER2-NEXT: cmpw (%rsi), %di # sched: [4:1.00] 3832; BTVER2-NEXT: #NO_APP 3833; BTVER2-NEXT: retq # sched: [4:1.00] 3834; 3835; ZNVER1-LABEL: test_cmp_16: 3836; ZNVER1: # %bb.0: 3837; ZNVER1-NEXT: #APP 3838; ZNVER1-NEXT: cmpw $511, %ax # imm = 0x1FF 3839; ZNVER1-NEXT: # sched: [1:0.25] 3840; ZNVER1-NEXT: cmpw $511, %di # imm = 0x1FF 3841; ZNVER1-NEXT: # sched: [1:0.25] 3842; ZNVER1-NEXT: cmpw $511, (%rsi) # imm = 0x1FF 3843; ZNVER1-NEXT: # sched: [5:0.50] 3844; ZNVER1-NEXT: cmpw $7, %di # sched: [1:0.25] 3845; ZNVER1-NEXT: cmpw $7, (%rsi) # sched: [5:0.50] 3846; ZNVER1-NEXT: cmpw %di, %di # sched: [1:0.25] 3847; ZNVER1-NEXT: cmpw %di, (%rsi) # sched: [5:0.50] 3848; ZNVER1-NEXT: cmpw (%rsi), %di # sched: [5:0.50] 3849; ZNVER1-NEXT: #NO_APP 3850; ZNVER1-NEXT: retq # sched: [1:0.50] 3851 tail call void asm "cmpw $2, %AX \0A\09 cmpw $2, $0 \0A\09 cmpw $2, $1 \0A\09 cmpw $3, $0 \0A\09 cmpw $3, $1 \0A\09 cmpw $0, $0 \0A\09 cmpw $0, $1 \0A\09 cmpw $1, $0", "r,*m,i,i"(i16 %a0, i16* %a1, i16 511, i8 7) nounwind 3852 ret void 3853} 3854define void @test_cmp_32(i32 %a0, i32* %a1) optsize { 3855; GENERIC-LABEL: test_cmp_32: 3856; GENERIC: # %bb.0: 3857; GENERIC-NEXT: #APP 3858; GENERIC-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3859; GENERIC-NEXT: # sched: [1:0.33] 3860; GENERIC-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3861; GENERIC-NEXT: # sched: [1:0.33] 3862; GENERIC-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3863; GENERIC-NEXT: # sched: [6:0.50] 3864; GENERIC-NEXT: cmpl $7, %edi # sched: [1:0.33] 3865; GENERIC-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3866; GENERIC-NEXT: cmpl %edi, %edi # sched: [1:0.33] 3867; GENERIC-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3868; GENERIC-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3869; GENERIC-NEXT: #NO_APP 3870; GENERIC-NEXT: retq # sched: [1:1.00] 3871; 3872; ATOM-LABEL: test_cmp_32: 3873; ATOM: # %bb.0: 3874; ATOM-NEXT: #APP 3875; ATOM-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3876; ATOM-NEXT: # sched: [1:0.50] 3877; ATOM-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3878; ATOM-NEXT: # sched: [1:0.50] 3879; ATOM-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3880; ATOM-NEXT: # sched: [1:1.00] 3881; ATOM-NEXT: cmpl $7, %edi # sched: [1:0.50] 3882; ATOM-NEXT: cmpl $7, (%rsi) # sched: [1:1.00] 3883; ATOM-NEXT: cmpl %edi, %edi # sched: [1:0.50] 3884; ATOM-NEXT: cmpl %edi, (%rsi) # sched: [1:1.00] 3885; ATOM-NEXT: cmpl (%rsi), %edi # sched: [1:1.00] 3886; ATOM-NEXT: #NO_APP 3887; ATOM-NEXT: retq # sched: [79:39.50] 3888; 3889; SLM-LABEL: test_cmp_32: 3890; SLM: # %bb.0: 3891; SLM-NEXT: #APP 3892; SLM-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3893; SLM-NEXT: # sched: [1:0.50] 3894; SLM-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3895; SLM-NEXT: # sched: [1:0.50] 3896; SLM-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3897; SLM-NEXT: # sched: [4:1.00] 3898; SLM-NEXT: cmpl $7, %edi # sched: [1:0.50] 3899; SLM-NEXT: cmpl $7, (%rsi) # sched: [4:1.00] 3900; SLM-NEXT: cmpl %edi, %edi # sched: [1:0.50] 3901; SLM-NEXT: cmpl %edi, (%rsi) # sched: [4:1.00] 3902; SLM-NEXT: cmpl (%rsi), %edi # sched: [4:1.00] 3903; SLM-NEXT: #NO_APP 3904; SLM-NEXT: retq # sched: [4:1.00] 3905; 3906; SANDY-LABEL: test_cmp_32: 3907; SANDY: # %bb.0: 3908; SANDY-NEXT: #APP 3909; SANDY-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3910; SANDY-NEXT: # sched: [1:0.33] 3911; SANDY-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3912; SANDY-NEXT: # sched: [1:0.33] 3913; SANDY-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3914; SANDY-NEXT: # sched: [6:0.50] 3915; SANDY-NEXT: cmpl $7, %edi # sched: [1:0.33] 3916; SANDY-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3917; SANDY-NEXT: cmpl %edi, %edi # sched: [1:0.33] 3918; SANDY-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3919; SANDY-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3920; SANDY-NEXT: #NO_APP 3921; SANDY-NEXT: retq # sched: [1:1.00] 3922; 3923; HASWELL-LABEL: test_cmp_32: 3924; HASWELL: # %bb.0: 3925; HASWELL-NEXT: #APP 3926; HASWELL-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3927; HASWELL-NEXT: # sched: [1:0.25] 3928; HASWELL-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3929; HASWELL-NEXT: # sched: [1:0.25] 3930; HASWELL-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3931; HASWELL-NEXT: # sched: [6:0.50] 3932; HASWELL-NEXT: cmpl $7, %edi # sched: [1:0.25] 3933; HASWELL-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3934; HASWELL-NEXT: cmpl %edi, %edi # sched: [1:0.25] 3935; HASWELL-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3936; HASWELL-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3937; HASWELL-NEXT: #NO_APP 3938; HASWELL-NEXT: retq # sched: [7:1.00] 3939; 3940; BROADWELL-LABEL: test_cmp_32: 3941; BROADWELL: # %bb.0: 3942; BROADWELL-NEXT: #APP 3943; BROADWELL-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3944; BROADWELL-NEXT: # sched: [1:0.25] 3945; BROADWELL-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3946; BROADWELL-NEXT: # sched: [1:0.25] 3947; BROADWELL-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3948; BROADWELL-NEXT: # sched: [6:0.50] 3949; BROADWELL-NEXT: cmpl $7, %edi # sched: [1:0.25] 3950; BROADWELL-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3951; BROADWELL-NEXT: cmpl %edi, %edi # sched: [1:0.25] 3952; BROADWELL-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3953; BROADWELL-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3954; BROADWELL-NEXT: #NO_APP 3955; BROADWELL-NEXT: retq # sched: [7:1.00] 3956; 3957; SKYLAKE-LABEL: test_cmp_32: 3958; SKYLAKE: # %bb.0: 3959; SKYLAKE-NEXT: #APP 3960; SKYLAKE-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3961; SKYLAKE-NEXT: # sched: [1:0.25] 3962; SKYLAKE-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3963; SKYLAKE-NEXT: # sched: [1:0.25] 3964; SKYLAKE-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3965; SKYLAKE-NEXT: # sched: [6:0.50] 3966; SKYLAKE-NEXT: cmpl $7, %edi # sched: [1:0.25] 3967; SKYLAKE-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3968; SKYLAKE-NEXT: cmpl %edi, %edi # sched: [1:0.25] 3969; SKYLAKE-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3970; SKYLAKE-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3971; SKYLAKE-NEXT: #NO_APP 3972; SKYLAKE-NEXT: retq # sched: [7:1.00] 3973; 3974; SKX-LABEL: test_cmp_32: 3975; SKX: # %bb.0: 3976; SKX-NEXT: #APP 3977; SKX-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3978; SKX-NEXT: # sched: [1:0.25] 3979; SKX-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3980; SKX-NEXT: # sched: [1:0.25] 3981; SKX-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3982; SKX-NEXT: # sched: [6:0.50] 3983; SKX-NEXT: cmpl $7, %edi # sched: [1:0.25] 3984; SKX-NEXT: cmpl $7, (%rsi) # sched: [6:0.50] 3985; SKX-NEXT: cmpl %edi, %edi # sched: [1:0.25] 3986; SKX-NEXT: cmpl %edi, (%rsi) # sched: [6:0.50] 3987; SKX-NEXT: cmpl (%rsi), %edi # sched: [6:0.50] 3988; SKX-NEXT: #NO_APP 3989; SKX-NEXT: retq # sched: [7:1.00] 3990; 3991; BTVER2-LABEL: test_cmp_32: 3992; BTVER2: # %bb.0: 3993; BTVER2-NEXT: #APP 3994; BTVER2-NEXT: cmpl $665536, %eax # imm = 0xA27C0 3995; BTVER2-NEXT: # sched: [1:0.50] 3996; BTVER2-NEXT: cmpl $665536, %edi # imm = 0xA27C0 3997; BTVER2-NEXT: # sched: [1:0.50] 3998; BTVER2-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 3999; BTVER2-NEXT: # sched: [4:1.00] 4000; BTVER2-NEXT: cmpl $7, %edi # sched: [1:0.50] 4001; BTVER2-NEXT: cmpl $7, (%rsi) # sched: [4:1.00] 4002; BTVER2-NEXT: cmpl %edi, %edi # sched: [1:0.50] 4003; BTVER2-NEXT: cmpl %edi, (%rsi) # sched: [4:1.00] 4004; BTVER2-NEXT: cmpl (%rsi), %edi # sched: [4:1.00] 4005; BTVER2-NEXT: #NO_APP 4006; BTVER2-NEXT: retq # sched: [4:1.00] 4007; 4008; ZNVER1-LABEL: test_cmp_32: 4009; ZNVER1: # %bb.0: 4010; ZNVER1-NEXT: #APP 4011; ZNVER1-NEXT: cmpl $665536, %eax # imm = 0xA27C0 4012; ZNVER1-NEXT: # sched: [1:0.25] 4013; ZNVER1-NEXT: cmpl $665536, %edi # imm = 0xA27C0 4014; ZNVER1-NEXT: # sched: [1:0.25] 4015; ZNVER1-NEXT: cmpl $665536, (%rsi) # imm = 0xA27C0 4016; ZNVER1-NEXT: # sched: [5:0.50] 4017; ZNVER1-NEXT: cmpl $7, %edi # sched: [1:0.25] 4018; ZNVER1-NEXT: cmpl $7, (%rsi) # sched: [5:0.50] 4019; ZNVER1-NEXT: cmpl %edi, %edi # sched: [1:0.25] 4020; ZNVER1-NEXT: cmpl %edi, (%rsi) # sched: [5:0.50] 4021; ZNVER1-NEXT: cmpl (%rsi), %edi # sched: [5:0.50] 4022; ZNVER1-NEXT: #NO_APP 4023; ZNVER1-NEXT: retq # sched: [1:0.50] 4024 tail call void asm "cmpl $2, %EAX \0A\09 cmpl $2, $0 \0A\09 cmpl $2, $1 \0A\09 cmpl $3, $0 \0A\09 cmpl $3, $1 \0A\09 cmpl $0, $0 \0A\09 cmpl $0, $1 \0A\09 cmpl $1, $0", "r,*m,i,i"(i32 %a0, i32* %a1, i32 665536, i8 7) nounwind 4025 ret void 4026} 4027define void @test_cmp_64(i64 %a0, i64* %a1) optsize { 4028; GENERIC-LABEL: test_cmp_64: 4029; GENERIC: # %bb.0: 4030; GENERIC-NEXT: #APP 4031; GENERIC-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4032; GENERIC-NEXT: # sched: [1:0.33] 4033; GENERIC-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4034; GENERIC-NEXT: # sched: [1:0.33] 4035; GENERIC-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4036; GENERIC-NEXT: # sched: [6:0.50] 4037; GENERIC-NEXT: cmpq $7, %rdi # sched: [1:0.33] 4038; GENERIC-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4039; GENERIC-NEXT: cmpq %rdi, %rdi # sched: [1:0.33] 4040; GENERIC-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4041; GENERIC-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4042; GENERIC-NEXT: #NO_APP 4043; GENERIC-NEXT: retq # sched: [1:1.00] 4044; 4045; ATOM-LABEL: test_cmp_64: 4046; ATOM: # %bb.0: 4047; ATOM-NEXT: #APP 4048; ATOM-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4049; ATOM-NEXT: # sched: [1:0.50] 4050; ATOM-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4051; ATOM-NEXT: # sched: [1:0.50] 4052; ATOM-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4053; ATOM-NEXT: # sched: [1:1.00] 4054; ATOM-NEXT: cmpq $7, %rdi # sched: [1:0.50] 4055; ATOM-NEXT: cmpq $7, (%rsi) # sched: [1:1.00] 4056; ATOM-NEXT: cmpq %rdi, %rdi # sched: [1:0.50] 4057; ATOM-NEXT: cmpq %rdi, (%rsi) # sched: [1:1.00] 4058; ATOM-NEXT: cmpq (%rsi), %rdi # sched: [1:1.00] 4059; ATOM-NEXT: #NO_APP 4060; ATOM-NEXT: retq # sched: [79:39.50] 4061; 4062; SLM-LABEL: test_cmp_64: 4063; SLM: # %bb.0: 4064; SLM-NEXT: #APP 4065; SLM-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4066; SLM-NEXT: # sched: [1:0.50] 4067; SLM-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4068; SLM-NEXT: # sched: [1:0.50] 4069; SLM-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4070; SLM-NEXT: # sched: [4:1.00] 4071; SLM-NEXT: cmpq $7, %rdi # sched: [1:0.50] 4072; SLM-NEXT: cmpq $7, (%rsi) # sched: [4:1.00] 4073; SLM-NEXT: cmpq %rdi, %rdi # sched: [1:0.50] 4074; SLM-NEXT: cmpq %rdi, (%rsi) # sched: [4:1.00] 4075; SLM-NEXT: cmpq (%rsi), %rdi # sched: [4:1.00] 4076; SLM-NEXT: #NO_APP 4077; SLM-NEXT: retq # sched: [4:1.00] 4078; 4079; SANDY-LABEL: test_cmp_64: 4080; SANDY: # %bb.0: 4081; SANDY-NEXT: #APP 4082; SANDY-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4083; SANDY-NEXT: # sched: [1:0.33] 4084; SANDY-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4085; SANDY-NEXT: # sched: [1:0.33] 4086; SANDY-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4087; SANDY-NEXT: # sched: [6:0.50] 4088; SANDY-NEXT: cmpq $7, %rdi # sched: [1:0.33] 4089; SANDY-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4090; SANDY-NEXT: cmpq %rdi, %rdi # sched: [1:0.33] 4091; SANDY-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4092; SANDY-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4093; SANDY-NEXT: #NO_APP 4094; SANDY-NEXT: retq # sched: [1:1.00] 4095; 4096; HASWELL-LABEL: test_cmp_64: 4097; HASWELL: # %bb.0: 4098; HASWELL-NEXT: #APP 4099; HASWELL-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4100; HASWELL-NEXT: # sched: [1:0.25] 4101; HASWELL-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4102; HASWELL-NEXT: # sched: [1:0.25] 4103; HASWELL-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4104; HASWELL-NEXT: # sched: [6:0.50] 4105; HASWELL-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4106; HASWELL-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4107; HASWELL-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4108; HASWELL-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4109; HASWELL-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4110; HASWELL-NEXT: #NO_APP 4111; HASWELL-NEXT: retq # sched: [7:1.00] 4112; 4113; BROADWELL-LABEL: test_cmp_64: 4114; BROADWELL: # %bb.0: 4115; BROADWELL-NEXT: #APP 4116; BROADWELL-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4117; BROADWELL-NEXT: # sched: [1:0.25] 4118; BROADWELL-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4119; BROADWELL-NEXT: # sched: [1:0.25] 4120; BROADWELL-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4121; BROADWELL-NEXT: # sched: [6:0.50] 4122; BROADWELL-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4123; BROADWELL-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4124; BROADWELL-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4125; BROADWELL-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4126; BROADWELL-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4127; BROADWELL-NEXT: #NO_APP 4128; BROADWELL-NEXT: retq # sched: [7:1.00] 4129; 4130; SKYLAKE-LABEL: test_cmp_64: 4131; SKYLAKE: # %bb.0: 4132; SKYLAKE-NEXT: #APP 4133; SKYLAKE-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4134; SKYLAKE-NEXT: # sched: [1:0.25] 4135; SKYLAKE-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4136; SKYLAKE-NEXT: # sched: [1:0.25] 4137; SKYLAKE-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4138; SKYLAKE-NEXT: # sched: [6:0.50] 4139; SKYLAKE-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4140; SKYLAKE-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4141; SKYLAKE-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4142; SKYLAKE-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4143; SKYLAKE-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4144; SKYLAKE-NEXT: #NO_APP 4145; SKYLAKE-NEXT: retq # sched: [7:1.00] 4146; 4147; SKX-LABEL: test_cmp_64: 4148; SKX: # %bb.0: 4149; SKX-NEXT: #APP 4150; SKX-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4151; SKX-NEXT: # sched: [1:0.25] 4152; SKX-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4153; SKX-NEXT: # sched: [1:0.25] 4154; SKX-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4155; SKX-NEXT: # sched: [6:0.50] 4156; SKX-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4157; SKX-NEXT: cmpq $7, (%rsi) # sched: [6:0.50] 4158; SKX-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4159; SKX-NEXT: cmpq %rdi, (%rsi) # sched: [6:0.50] 4160; SKX-NEXT: cmpq (%rsi), %rdi # sched: [6:0.50] 4161; SKX-NEXT: #NO_APP 4162; SKX-NEXT: retq # sched: [7:1.00] 4163; 4164; BTVER2-LABEL: test_cmp_64: 4165; BTVER2: # %bb.0: 4166; BTVER2-NEXT: #APP 4167; BTVER2-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4168; BTVER2-NEXT: # sched: [1:0.50] 4169; BTVER2-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4170; BTVER2-NEXT: # sched: [1:0.50] 4171; BTVER2-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4172; BTVER2-NEXT: # sched: [4:1.00] 4173; BTVER2-NEXT: cmpq $7, %rdi # sched: [1:0.50] 4174; BTVER2-NEXT: cmpq $7, (%rsi) # sched: [4:1.00] 4175; BTVER2-NEXT: cmpq %rdi, %rdi # sched: [1:0.50] 4176; BTVER2-NEXT: cmpq %rdi, (%rsi) # sched: [4:1.00] 4177; BTVER2-NEXT: cmpq (%rsi), %rdi # sched: [4:1.00] 4178; BTVER2-NEXT: #NO_APP 4179; BTVER2-NEXT: retq # sched: [4:1.00] 4180; 4181; ZNVER1-LABEL: test_cmp_64: 4182; ZNVER1: # %bb.0: 4183; ZNVER1-NEXT: #APP 4184; ZNVER1-NEXT: cmpq $665536, %rax # imm = 0xA27C0 4185; ZNVER1-NEXT: # sched: [1:0.25] 4186; ZNVER1-NEXT: cmpq $665536, %rdi # imm = 0xA27C0 4187; ZNVER1-NEXT: # sched: [1:0.25] 4188; ZNVER1-NEXT: cmpq $665536, (%rsi) # imm = 0xA27C0 4189; ZNVER1-NEXT: # sched: [5:0.50] 4190; ZNVER1-NEXT: cmpq $7, %rdi # sched: [1:0.25] 4191; ZNVER1-NEXT: cmpq $7, (%rsi) # sched: [5:0.50] 4192; ZNVER1-NEXT: cmpq %rdi, %rdi # sched: [1:0.25] 4193; ZNVER1-NEXT: cmpq %rdi, (%rsi) # sched: [5:0.50] 4194; ZNVER1-NEXT: cmpq (%rsi), %rdi # sched: [5:0.50] 4195; ZNVER1-NEXT: #NO_APP 4196; ZNVER1-NEXT: retq # sched: [1:0.50] 4197 tail call void asm "cmpq $2, %RAX \0A\09 cmpq $2, $0 \0A\09 cmpq $2, $1 \0A\09 cmpq $3, $0 \0A\09 cmpq $3, $1 \0A\09 cmpq $0, $0 \0A\09 cmpq $0, $1 \0A\09 cmpq $1, $0", "r,*m,i,i"(i64 %a0, i64* %a1, i32 665536, i8 7) nounwind 4198 ret void 4199} 4200 4201define void @test_cmps() optsize { 4202; GENERIC-LABEL: test_cmps: 4203; GENERIC: # %bb.0: 4204; GENERIC-NEXT: #APP 4205; GENERIC-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [8:1.00] 4206; GENERIC-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [8:1.00] 4207; GENERIC-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [8:1.00] 4208; GENERIC-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [8:1.00] 4209; GENERIC-NEXT: #NO_APP 4210; GENERIC-NEXT: retq # sched: [1:1.00] 4211; 4212; ATOM-LABEL: test_cmps: 4213; ATOM: # %bb.0: 4214; ATOM-NEXT: #APP 4215; ATOM-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [3:1.50] 4216; ATOM-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [3:1.50] 4217; ATOM-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [3:1.50] 4218; ATOM-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [3:1.50] 4219; ATOM-NEXT: #NO_APP 4220; ATOM-NEXT: retq # sched: [79:39.50] 4221; 4222; SLM-LABEL: test_cmps: 4223; SLM: # %bb.0: 4224; SLM-NEXT: #APP 4225; SLM-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:1.00] 4226; SLM-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:1.00] 4227; SLM-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:1.00] 4228; SLM-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:1.00] 4229; SLM-NEXT: #NO_APP 4230; SLM-NEXT: retq # sched: [4:1.00] 4231; 4232; SANDY-LABEL: test_cmps: 4233; SANDY: # %bb.0: 4234; SANDY-NEXT: #APP 4235; SANDY-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [8:1.00] 4236; SANDY-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [8:1.00] 4237; SANDY-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [8:1.00] 4238; SANDY-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [8:1.00] 4239; SANDY-NEXT: #NO_APP 4240; SANDY-NEXT: retq # sched: [1:1.00] 4241; 4242; HASWELL-LABEL: test_cmps: 4243; HASWELL: # %bb.0: 4244; HASWELL-NEXT: #APP 4245; HASWELL-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [4:1.00] 4246; HASWELL-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [4:1.00] 4247; HASWELL-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [4:1.00] 4248; HASWELL-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [4:1.00] 4249; HASWELL-NEXT: #NO_APP 4250; HASWELL-NEXT: retq # sched: [7:1.00] 4251; 4252; BROADWELL-LABEL: test_cmps: 4253; BROADWELL: # %bb.0: 4254; BROADWELL-NEXT: #APP 4255; BROADWELL-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.25] 4256; BROADWELL-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.25] 4257; BROADWELL-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.25] 4258; BROADWELL-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.25] 4259; BROADWELL-NEXT: #NO_APP 4260; BROADWELL-NEXT: retq # sched: [7:1.00] 4261; 4262; SKYLAKE-LABEL: test_cmps: 4263; SKYLAKE: # %bb.0: 4264; SKYLAKE-NEXT: #APP 4265; SKYLAKE-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.25] 4266; SKYLAKE-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.25] 4267; SKYLAKE-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.25] 4268; SKYLAKE-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.25] 4269; SKYLAKE-NEXT: #NO_APP 4270; SKYLAKE-NEXT: retq # sched: [7:1.00] 4271; 4272; SKX-LABEL: test_cmps: 4273; SKX: # %bb.0: 4274; SKX-NEXT: #APP 4275; SKX-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.25] 4276; SKX-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.25] 4277; SKX-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.25] 4278; SKX-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.25] 4279; SKX-NEXT: #NO_APP 4280; SKX-NEXT: retq # sched: [7:1.00] 4281; 4282; BTVER2-LABEL: test_cmps: 4283; BTVER2: # %bb.0: 4284; BTVER2-NEXT: #APP 4285; BTVER2-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.50] 4286; BTVER2-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.50] 4287; BTVER2-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.50] 4288; BTVER2-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.50] 4289; BTVER2-NEXT: #NO_APP 4290; BTVER2-NEXT: retq # sched: [4:1.00] 4291; 4292; ZNVER1-LABEL: test_cmps: 4293; ZNVER1: # %bb.0: 4294; ZNVER1-NEXT: #APP 4295; ZNVER1-NEXT: cmpsb %es:(%rdi), (%rsi) # sched: [100:0.25] 4296; ZNVER1-NEXT: cmpsw %es:(%rdi), (%rsi) # sched: [100:0.25] 4297; ZNVER1-NEXT: cmpsl %es:(%rdi), (%rsi) # sched: [100:0.25] 4298; ZNVER1-NEXT: cmpsq %es:(%rdi), (%rsi) # sched: [100:0.25] 4299; ZNVER1-NEXT: #NO_APP 4300; ZNVER1-NEXT: retq # sched: [1:0.50] 4301 call void asm sideeffect "cmpsb \0A\09 cmpsw \0A\09 cmpsl \0A\09 cmpsq", ""() 4302 ret void 4303} 4304 4305define void @test_cmpxchg_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 4306; GENERIC-LABEL: test_cmpxchg_8: 4307; GENERIC: # %bb.0: 4308; GENERIC-NEXT: #APP 4309; GENERIC-NEXT: cmpxchgb %dil, %sil # sched: [5:1.33] 4310; GENERIC-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4311; GENERIC-NEXT: #NO_APP 4312; GENERIC-NEXT: retq # sched: [1:1.00] 4313; 4314; ATOM-LABEL: test_cmpxchg_8: 4315; ATOM: # %bb.0: 4316; ATOM-NEXT: #APP 4317; ATOM-NEXT: cmpxchgb %dil, %sil # sched: [9:4.50] 4318; ATOM-NEXT: cmpxchgb %dil, (%rdx) # sched: [6:3.00] 4319; ATOM-NEXT: #NO_APP 4320; ATOM-NEXT: retq # sched: [79:39.50] 4321; 4322; SLM-LABEL: test_cmpxchg_8: 4323; SLM: # %bb.0: 4324; SLM-NEXT: #APP 4325; SLM-NEXT: cmpxchgb %dil, %sil # sched: [1:0.50] 4326; SLM-NEXT: cmpxchgb %dil, (%rdx) # sched: [4:2.00] 4327; SLM-NEXT: #NO_APP 4328; SLM-NEXT: retq # sched: [4:1.00] 4329; 4330; SANDY-LABEL: test_cmpxchg_8: 4331; SANDY: # %bb.0: 4332; SANDY-NEXT: #APP 4333; SANDY-NEXT: cmpxchgb %dil, %sil # sched: [5:1.33] 4334; SANDY-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4335; SANDY-NEXT: #NO_APP 4336; SANDY-NEXT: retq # sched: [1:1.00] 4337; 4338; HASWELL-LABEL: test_cmpxchg_8: 4339; HASWELL: # %bb.0: 4340; HASWELL-NEXT: #APP 4341; HASWELL-NEXT: cmpxchgb %dil, %sil # sched: [5:1.25] 4342; HASWELL-NEXT: cmpxchgb %dil, (%rdx) # sched: [9:1.00] 4343; HASWELL-NEXT: #NO_APP 4344; HASWELL-NEXT: retq # sched: [7:1.00] 4345; 4346; BROADWELL-LABEL: test_cmpxchg_8: 4347; BROADWELL: # %bb.0: 4348; BROADWELL-NEXT: #APP 4349; BROADWELL-NEXT: cmpxchgb %dil, %sil # sched: [5:1.25] 4350; BROADWELL-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4351; BROADWELL-NEXT: #NO_APP 4352; BROADWELL-NEXT: retq # sched: [7:1.00] 4353; 4354; SKYLAKE-LABEL: test_cmpxchg_8: 4355; SKYLAKE: # %bb.0: 4356; SKYLAKE-NEXT: #APP 4357; SKYLAKE-NEXT: cmpxchgb %dil, %sil # sched: [5:1.25] 4358; SKYLAKE-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4359; SKYLAKE-NEXT: #NO_APP 4360; SKYLAKE-NEXT: retq # sched: [7:1.00] 4361; 4362; SKX-LABEL: test_cmpxchg_8: 4363; SKX: # %bb.0: 4364; SKX-NEXT: #APP 4365; SKX-NEXT: cmpxchgb %dil, %sil # sched: [5:1.25] 4366; SKX-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:1.00] 4367; SKX-NEXT: #NO_APP 4368; SKX-NEXT: retq # sched: [7:1.00] 4369; 4370; BTVER2-LABEL: test_cmpxchg_8: 4371; BTVER2: # %bb.0: 4372; BTVER2-NEXT: #APP 4373; BTVER2-NEXT: cmpxchgb %dil, %sil # sched: [1:0.50] 4374; BTVER2-NEXT: cmpxchgb %dil, (%rdx) # sched: [4:1.00] 4375; BTVER2-NEXT: #NO_APP 4376; BTVER2-NEXT: retq # sched: [4:1.00] 4377; 4378; ZNVER1-LABEL: test_cmpxchg_8: 4379; ZNVER1: # %bb.0: 4380; ZNVER1-NEXT: #APP 4381; ZNVER1-NEXT: cmpxchgb %dil, %sil # sched: [1:0.25] 4382; ZNVER1-NEXT: cmpxchgb %dil, (%rdx) # sched: [8:0.50] 4383; ZNVER1-NEXT: #NO_APP 4384; ZNVER1-NEXT: retq # sched: [1:0.50] 4385 tail call void asm "cmpxchgb $0, $1 \0a\09 cmpxchgb $0, $2", "r,r,*m"(i8 %a0, i8 %a1, i8 *%a2) nounwind 4386 ret void 4387} 4388define void @test_cmpxchg_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 4389; GENERIC-LABEL: test_cmpxchg_16: 4390; GENERIC: # %bb.0: 4391; GENERIC-NEXT: #APP 4392; GENERIC-NEXT: cmpxchgw %di, %si # sched: [5:1.33] 4393; GENERIC-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4394; GENERIC-NEXT: #NO_APP 4395; GENERIC-NEXT: retq # sched: [1:1.00] 4396; 4397; ATOM-LABEL: test_cmpxchg_16: 4398; ATOM: # %bb.0: 4399; ATOM-NEXT: #APP 4400; ATOM-NEXT: cmpxchgw %di, %si # sched: [15:7.50] 4401; ATOM-NEXT: cmpxchgw %di, (%rdx) # sched: [14:7.00] 4402; ATOM-NEXT: #NO_APP 4403; ATOM-NEXT: retq # sched: [79:39.50] 4404; 4405; SLM-LABEL: test_cmpxchg_16: 4406; SLM: # %bb.0: 4407; SLM-NEXT: #APP 4408; SLM-NEXT: cmpxchgw %di, %si # sched: [1:0.50] 4409; SLM-NEXT: cmpxchgw %di, (%rdx) # sched: [4:2.00] 4410; SLM-NEXT: #NO_APP 4411; SLM-NEXT: retq # sched: [4:1.00] 4412; 4413; SANDY-LABEL: test_cmpxchg_16: 4414; SANDY: # %bb.0: 4415; SANDY-NEXT: #APP 4416; SANDY-NEXT: cmpxchgw %di, %si # sched: [5:1.33] 4417; SANDY-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4418; SANDY-NEXT: #NO_APP 4419; SANDY-NEXT: retq # sched: [1:1.00] 4420; 4421; HASWELL-LABEL: test_cmpxchg_16: 4422; HASWELL: # %bb.0: 4423; HASWELL-NEXT: #APP 4424; HASWELL-NEXT: cmpxchgw %di, %si # sched: [5:1.25] 4425; HASWELL-NEXT: cmpxchgw %di, (%rdx) # sched: [9:1.00] 4426; HASWELL-NEXT: #NO_APP 4427; HASWELL-NEXT: retq # sched: [7:1.00] 4428; 4429; BROADWELL-LABEL: test_cmpxchg_16: 4430; BROADWELL: # %bb.0: 4431; BROADWELL-NEXT: #APP 4432; BROADWELL-NEXT: cmpxchgw %di, %si # sched: [5:1.25] 4433; BROADWELL-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4434; BROADWELL-NEXT: #NO_APP 4435; BROADWELL-NEXT: retq # sched: [7:1.00] 4436; 4437; SKYLAKE-LABEL: test_cmpxchg_16: 4438; SKYLAKE: # %bb.0: 4439; SKYLAKE-NEXT: #APP 4440; SKYLAKE-NEXT: cmpxchgw %di, %si # sched: [5:1.25] 4441; SKYLAKE-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4442; SKYLAKE-NEXT: #NO_APP 4443; SKYLAKE-NEXT: retq # sched: [7:1.00] 4444; 4445; SKX-LABEL: test_cmpxchg_16: 4446; SKX: # %bb.0: 4447; SKX-NEXT: #APP 4448; SKX-NEXT: cmpxchgw %di, %si # sched: [5:1.25] 4449; SKX-NEXT: cmpxchgw %di, (%rdx) # sched: [8:1.00] 4450; SKX-NEXT: #NO_APP 4451; SKX-NEXT: retq # sched: [7:1.00] 4452; 4453; BTVER2-LABEL: test_cmpxchg_16: 4454; BTVER2: # %bb.0: 4455; BTVER2-NEXT: #APP 4456; BTVER2-NEXT: cmpxchgw %di, %si # sched: [1:0.50] 4457; BTVER2-NEXT: cmpxchgw %di, (%rdx) # sched: [4:1.00] 4458; BTVER2-NEXT: #NO_APP 4459; BTVER2-NEXT: retq # sched: [4:1.00] 4460; 4461; ZNVER1-LABEL: test_cmpxchg_16: 4462; ZNVER1: # %bb.0: 4463; ZNVER1-NEXT: #APP 4464; ZNVER1-NEXT: cmpxchgw %di, %si # sched: [1:0.25] 4465; ZNVER1-NEXT: cmpxchgw %di, (%rdx) # sched: [8:0.50] 4466; ZNVER1-NEXT: #NO_APP 4467; ZNVER1-NEXT: retq # sched: [1:0.50] 4468 tail call void asm "cmpxchgw $0, $1 \0a\09 cmpxchgw $0, $2", "r,r,*m"(i16 %a0, i16 %a1, i16 *%a2) nounwind 4469 ret void 4470} 4471define void @test_cmpxchg_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 4472; GENERIC-LABEL: test_cmpxchg_32: 4473; GENERIC: # %bb.0: 4474; GENERIC-NEXT: #APP 4475; GENERIC-NEXT: cmpxchgl %edi, %esi # sched: [5:1.33] 4476; GENERIC-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4477; GENERIC-NEXT: #NO_APP 4478; GENERIC-NEXT: retq # sched: [1:1.00] 4479; 4480; ATOM-LABEL: test_cmpxchg_32: 4481; ATOM: # %bb.0: 4482; ATOM-NEXT: #APP 4483; ATOM-NEXT: cmpxchgl %edi, %esi # sched: [15:7.50] 4484; ATOM-NEXT: cmpxchgl %edi, (%rdx) # sched: [14:7.00] 4485; ATOM-NEXT: #NO_APP 4486; ATOM-NEXT: retq # sched: [79:39.50] 4487; 4488; SLM-LABEL: test_cmpxchg_32: 4489; SLM: # %bb.0: 4490; SLM-NEXT: #APP 4491; SLM-NEXT: cmpxchgl %edi, %esi # sched: [1:0.50] 4492; SLM-NEXT: cmpxchgl %edi, (%rdx) # sched: [4:2.00] 4493; SLM-NEXT: #NO_APP 4494; SLM-NEXT: retq # sched: [4:1.00] 4495; 4496; SANDY-LABEL: test_cmpxchg_32: 4497; SANDY: # %bb.0: 4498; SANDY-NEXT: #APP 4499; SANDY-NEXT: cmpxchgl %edi, %esi # sched: [5:1.33] 4500; SANDY-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4501; SANDY-NEXT: #NO_APP 4502; SANDY-NEXT: retq # sched: [1:1.00] 4503; 4504; HASWELL-LABEL: test_cmpxchg_32: 4505; HASWELL: # %bb.0: 4506; HASWELL-NEXT: #APP 4507; HASWELL-NEXT: cmpxchgl %edi, %esi # sched: [5:1.25] 4508; HASWELL-NEXT: cmpxchgl %edi, (%rdx) # sched: [9:1.00] 4509; HASWELL-NEXT: #NO_APP 4510; HASWELL-NEXT: retq # sched: [7:1.00] 4511; 4512; BROADWELL-LABEL: test_cmpxchg_32: 4513; BROADWELL: # %bb.0: 4514; BROADWELL-NEXT: #APP 4515; BROADWELL-NEXT: cmpxchgl %edi, %esi # sched: [5:1.25] 4516; BROADWELL-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4517; BROADWELL-NEXT: #NO_APP 4518; BROADWELL-NEXT: retq # sched: [7:1.00] 4519; 4520; SKYLAKE-LABEL: test_cmpxchg_32: 4521; SKYLAKE: # %bb.0: 4522; SKYLAKE-NEXT: #APP 4523; SKYLAKE-NEXT: cmpxchgl %edi, %esi # sched: [5:1.25] 4524; SKYLAKE-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4525; SKYLAKE-NEXT: #NO_APP 4526; SKYLAKE-NEXT: retq # sched: [7:1.00] 4527; 4528; SKX-LABEL: test_cmpxchg_32: 4529; SKX: # %bb.0: 4530; SKX-NEXT: #APP 4531; SKX-NEXT: cmpxchgl %edi, %esi # sched: [5:1.25] 4532; SKX-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:1.00] 4533; SKX-NEXT: #NO_APP 4534; SKX-NEXT: retq # sched: [7:1.00] 4535; 4536; BTVER2-LABEL: test_cmpxchg_32: 4537; BTVER2: # %bb.0: 4538; BTVER2-NEXT: #APP 4539; BTVER2-NEXT: cmpxchgl %edi, %esi # sched: [1:0.50] 4540; BTVER2-NEXT: cmpxchgl %edi, (%rdx) # sched: [4:1.00] 4541; BTVER2-NEXT: #NO_APP 4542; BTVER2-NEXT: retq # sched: [4:1.00] 4543; 4544; ZNVER1-LABEL: test_cmpxchg_32: 4545; ZNVER1: # %bb.0: 4546; ZNVER1-NEXT: #APP 4547; ZNVER1-NEXT: cmpxchgl %edi, %esi # sched: [1:0.25] 4548; ZNVER1-NEXT: cmpxchgl %edi, (%rdx) # sched: [8:0.50] 4549; ZNVER1-NEXT: #NO_APP 4550; ZNVER1-NEXT: retq # sched: [1:0.50] 4551 tail call void asm "cmpxchgl $0, $1 \0a\09 cmpxchgl $0, $2", "r,r,*m"(i32 %a0, i32 %a1, i32 *%a2) nounwind 4552 ret void 4553} 4554define void @test_cmpxchg_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 4555; GENERIC-LABEL: test_cmpxchg_64: 4556; GENERIC: # %bb.0: 4557; GENERIC-NEXT: #APP 4558; GENERIC-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.33] 4559; GENERIC-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4560; GENERIC-NEXT: #NO_APP 4561; GENERIC-NEXT: retq # sched: [1:1.00] 4562; 4563; ATOM-LABEL: test_cmpxchg_64: 4564; ATOM: # %bb.0: 4565; ATOM-NEXT: #APP 4566; ATOM-NEXT: cmpxchgq %rdi, %rsi # sched: [15:7.50] 4567; ATOM-NEXT: cmpxchgq %rdi, (%rdx) # sched: [14:7.00] 4568; ATOM-NEXT: #NO_APP 4569; ATOM-NEXT: retq # sched: [79:39.50] 4570; 4571; SLM-LABEL: test_cmpxchg_64: 4572; SLM: # %bb.0: 4573; SLM-NEXT: #APP 4574; SLM-NEXT: cmpxchgq %rdi, %rsi # sched: [1:0.50] 4575; SLM-NEXT: cmpxchgq %rdi, (%rdx) # sched: [4:2.00] 4576; SLM-NEXT: #NO_APP 4577; SLM-NEXT: retq # sched: [4:1.00] 4578; 4579; SANDY-LABEL: test_cmpxchg_64: 4580; SANDY: # %bb.0: 4581; SANDY-NEXT: #APP 4582; SANDY-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.33] 4583; SANDY-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4584; SANDY-NEXT: #NO_APP 4585; SANDY-NEXT: retq # sched: [1:1.00] 4586; 4587; HASWELL-LABEL: test_cmpxchg_64: 4588; HASWELL: # %bb.0: 4589; HASWELL-NEXT: #APP 4590; HASWELL-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.25] 4591; HASWELL-NEXT: cmpxchgq %rdi, (%rdx) # sched: [9:1.00] 4592; HASWELL-NEXT: #NO_APP 4593; HASWELL-NEXT: retq # sched: [7:1.00] 4594; 4595; BROADWELL-LABEL: test_cmpxchg_64: 4596; BROADWELL: # %bb.0: 4597; BROADWELL-NEXT: #APP 4598; BROADWELL-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.25] 4599; BROADWELL-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4600; BROADWELL-NEXT: #NO_APP 4601; BROADWELL-NEXT: retq # sched: [7:1.00] 4602; 4603; SKYLAKE-LABEL: test_cmpxchg_64: 4604; SKYLAKE: # %bb.0: 4605; SKYLAKE-NEXT: #APP 4606; SKYLAKE-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.25] 4607; SKYLAKE-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4608; SKYLAKE-NEXT: #NO_APP 4609; SKYLAKE-NEXT: retq # sched: [7:1.00] 4610; 4611; SKX-LABEL: test_cmpxchg_64: 4612; SKX: # %bb.0: 4613; SKX-NEXT: #APP 4614; SKX-NEXT: cmpxchgq %rdi, %rsi # sched: [5:1.25] 4615; SKX-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:1.00] 4616; SKX-NEXT: #NO_APP 4617; SKX-NEXT: retq # sched: [7:1.00] 4618; 4619; BTVER2-LABEL: test_cmpxchg_64: 4620; BTVER2: # %bb.0: 4621; BTVER2-NEXT: #APP 4622; BTVER2-NEXT: cmpxchgq %rdi, %rsi # sched: [1:0.50] 4623; BTVER2-NEXT: cmpxchgq %rdi, (%rdx) # sched: [4:1.00] 4624; BTVER2-NEXT: #NO_APP 4625; BTVER2-NEXT: retq # sched: [4:1.00] 4626; 4627; ZNVER1-LABEL: test_cmpxchg_64: 4628; ZNVER1: # %bb.0: 4629; ZNVER1-NEXT: #APP 4630; ZNVER1-NEXT: cmpxchgq %rdi, %rsi # sched: [1:0.25] 4631; ZNVER1-NEXT: cmpxchgq %rdi, (%rdx) # sched: [8:0.50] 4632; ZNVER1-NEXT: #NO_APP 4633; ZNVER1-NEXT: retq # sched: [1:0.50] 4634 tail call void asm "cmpxchgq $0, $1 \0a\09 cmpxchgq $0, $2", "r,r,*m"(i64 %a0, i64 %a1, i64 *%a2) nounwind 4635 ret void 4636} 4637define void @test_cmpxchg8b_cmpxchg16b(i8 *%a0) optsize { 4638; GENERIC-LABEL: test_cmpxchg8b_cmpxchg16b: 4639; GENERIC: # %bb.0: 4640; GENERIC-NEXT: #APP 4641; GENERIC-NEXT: cmpxchg8b (%rdi) # sched: [6:1.00] 4642; GENERIC-NEXT: cmpxchg16b (%rdi) # sched: [6:1.00] 4643; GENERIC-NEXT: #NO_APP 4644; GENERIC-NEXT: retq # sched: [1:1.00] 4645; 4646; ATOM-LABEL: test_cmpxchg8b_cmpxchg16b: 4647; ATOM: # %bb.0: 4648; ATOM-NEXT: #APP 4649; ATOM-NEXT: cmpxchg8b (%rdi) # sched: [18:9.00] 4650; ATOM-NEXT: cmpxchg16b (%rdi) # sched: [22:11.00] 4651; ATOM-NEXT: #NO_APP 4652; ATOM-NEXT: retq # sched: [79:39.50] 4653; 4654; SLM-LABEL: test_cmpxchg8b_cmpxchg16b: 4655; SLM: # %bb.0: 4656; SLM-NEXT: #APP 4657; SLM-NEXT: cmpxchg8b (%rdi) # sched: [4:2.00] 4658; SLM-NEXT: cmpxchg16b (%rdi) # sched: [4:2.00] 4659; SLM-NEXT: #NO_APP 4660; SLM-NEXT: retq # sched: [4:1.00] 4661; 4662; SANDY-LABEL: test_cmpxchg8b_cmpxchg16b: 4663; SANDY: # %bb.0: 4664; SANDY-NEXT: #APP 4665; SANDY-NEXT: cmpxchg8b (%rdi) # sched: [6:1.00] 4666; SANDY-NEXT: cmpxchg16b (%rdi) # sched: [6:1.00] 4667; SANDY-NEXT: #NO_APP 4668; SANDY-NEXT: retq # sched: [1:1.00] 4669; 4670; HASWELL-LABEL: test_cmpxchg8b_cmpxchg16b: 4671; HASWELL: # %bb.0: 4672; HASWELL-NEXT: #APP 4673; HASWELL-NEXT: cmpxchg8b (%rdi) # sched: [17:2.75] 4674; HASWELL-NEXT: cmpxchg16b (%rdi) # sched: [22:4.00] 4675; HASWELL-NEXT: #NO_APP 4676; HASWELL-NEXT: retq # sched: [7:1.00] 4677; 4678; BROADWELL-LABEL: test_cmpxchg8b_cmpxchg16b: 4679; BROADWELL: # %bb.0: 4680; BROADWELL-NEXT: #APP 4681; BROADWELL-NEXT: cmpxchg8b (%rdi) # sched: [16:2.75] 4682; BROADWELL-NEXT: cmpxchg16b (%rdi) # sched: [21:4.00] 4683; BROADWELL-NEXT: #NO_APP 4684; BROADWELL-NEXT: retq # sched: [7:1.00] 4685; 4686; SKYLAKE-LABEL: test_cmpxchg8b_cmpxchg16b: 4687; SKYLAKE: # %bb.0: 4688; SKYLAKE-NEXT: #APP 4689; SKYLAKE-NEXT: cmpxchg8b (%rdi) # sched: [16:2.75] 4690; SKYLAKE-NEXT: cmpxchg16b (%rdi) # sched: [23:4.00] 4691; SKYLAKE-NEXT: #NO_APP 4692; SKYLAKE-NEXT: retq # sched: [7:1.00] 4693; 4694; SKX-LABEL: test_cmpxchg8b_cmpxchg16b: 4695; SKX: # %bb.0: 4696; SKX-NEXT: #APP 4697; SKX-NEXT: cmpxchg8b (%rdi) # sched: [16:2.75] 4698; SKX-NEXT: cmpxchg16b (%rdi) # sched: [23:4.00] 4699; SKX-NEXT: #NO_APP 4700; SKX-NEXT: retq # sched: [7:1.00] 4701; 4702; BTVER2-LABEL: test_cmpxchg8b_cmpxchg16b: 4703; BTVER2: # %bb.0: 4704; BTVER2-NEXT: #APP 4705; BTVER2-NEXT: cmpxchg8b (%rdi) # sched: [4:1.00] 4706; BTVER2-NEXT: cmpxchg16b (%rdi) # sched: [4:1.00] 4707; BTVER2-NEXT: #NO_APP 4708; BTVER2-NEXT: retq # sched: [4:1.00] 4709; 4710; ZNVER1-LABEL: test_cmpxchg8b_cmpxchg16b: 4711; ZNVER1: # %bb.0: 4712; ZNVER1-NEXT: #APP 4713; ZNVER1-NEXT: cmpxchg8b (%rdi) # sched: [1:0.50] 4714; ZNVER1-NEXT: cmpxchg16b (%rdi) # sched: [100:0.25] 4715; ZNVER1-NEXT: #NO_APP 4716; ZNVER1-NEXT: retq # sched: [1:0.50] 4717 tail call void asm "cmpxchg8b $0 \0a\09 cmpxchg16b $0", "*m"(i8 *%a0) nounwind 4718 ret void 4719} 4720 4721define void @test_cpuid() optsize { 4722; GENERIC-LABEL: test_cpuid: 4723; GENERIC: # %bb.0: 4724; GENERIC-NEXT: #APP 4725; GENERIC-NEXT: cpuid # sched: [100:0.33] 4726; GENERIC-NEXT: #NO_APP 4727; GENERIC-NEXT: retq # sched: [1:1.00] 4728; 4729; ATOM-LABEL: test_cpuid: 4730; ATOM: # %bb.0: 4731; ATOM-NEXT: #APP 4732; ATOM-NEXT: cpuid # sched: [121:60.50] 4733; ATOM-NEXT: #NO_APP 4734; ATOM-NEXT: retq # sched: [79:39.50] 4735; 4736; SLM-LABEL: test_cpuid: 4737; SLM: # %bb.0: 4738; SLM-NEXT: #APP 4739; SLM-NEXT: cpuid # sched: [100:1.00] 4740; SLM-NEXT: #NO_APP 4741; SLM-NEXT: retq # sched: [4:1.00] 4742; 4743; SANDY-LABEL: test_cpuid: 4744; SANDY: # %bb.0: 4745; SANDY-NEXT: #APP 4746; SANDY-NEXT: cpuid # sched: [100:0.33] 4747; SANDY-NEXT: #NO_APP 4748; SANDY-NEXT: retq # sched: [1:1.00] 4749; 4750; HASWELL-LABEL: test_cpuid: 4751; HASWELL: # %bb.0: 4752; HASWELL-NEXT: #APP 4753; HASWELL-NEXT: cpuid # sched: [18:2.00] 4754; HASWELL-NEXT: #NO_APP 4755; HASWELL-NEXT: retq # sched: [7:1.00] 4756; 4757; BROADWELL-LABEL: test_cpuid: 4758; BROADWELL: # %bb.0: 4759; BROADWELL-NEXT: #APP 4760; BROADWELL-NEXT: cpuid # sched: [18:2.00] 4761; BROADWELL-NEXT: #NO_APP 4762; BROADWELL-NEXT: retq # sched: [7:1.00] 4763; 4764; SKYLAKE-LABEL: test_cpuid: 4765; SKYLAKE: # %bb.0: 4766; SKYLAKE-NEXT: #APP 4767; SKYLAKE-NEXT: cpuid # sched: [18:2.00] 4768; SKYLAKE-NEXT: #NO_APP 4769; SKYLAKE-NEXT: retq # sched: [7:1.00] 4770; 4771; SKX-LABEL: test_cpuid: 4772; SKX: # %bb.0: 4773; SKX-NEXT: #APP 4774; SKX-NEXT: cpuid # sched: [18:2.00] 4775; SKX-NEXT: #NO_APP 4776; SKX-NEXT: retq # sched: [7:1.00] 4777; 4778; BTVER2-LABEL: test_cpuid: 4779; BTVER2: # %bb.0: 4780; BTVER2-NEXT: #APP 4781; BTVER2-NEXT: cpuid # sched: [100:0.50] 4782; BTVER2-NEXT: #NO_APP 4783; BTVER2-NEXT: retq # sched: [4:1.00] 4784; 4785; ZNVER1-LABEL: test_cpuid: 4786; ZNVER1: # %bb.0: 4787; ZNVER1-NEXT: #APP 4788; ZNVER1-NEXT: cpuid # sched: [100:0.25] 4789; ZNVER1-NEXT: #NO_APP 4790; ZNVER1-NEXT: retq # sched: [1:0.50] 4791 tail call void asm "cpuid", ""() nounwind 4792 ret void 4793} 4794 4795define void @test_dec8(i8 %a0, i8* %a1) optsize { 4796; GENERIC-LABEL: test_dec8: 4797; GENERIC: # %bb.0: 4798; GENERIC-NEXT: #APP 4799; GENERIC-NEXT: decb %dil # sched: [1:0.33] 4800; GENERIC-NEXT: decb (%rsi) # sched: [7:1.00] 4801; GENERIC-NEXT: #NO_APP 4802; GENERIC-NEXT: retq # sched: [1:1.00] 4803; 4804; ATOM-LABEL: test_dec8: 4805; ATOM: # %bb.0: 4806; ATOM-NEXT: #APP 4807; ATOM-NEXT: decb %dil # sched: [1:0.50] 4808; ATOM-NEXT: decb (%rsi) # sched: [1:1.00] 4809; ATOM-NEXT: #NO_APP 4810; ATOM-NEXT: retq # sched: [79:39.50] 4811; 4812; SLM-LABEL: test_dec8: 4813; SLM: # %bb.0: 4814; SLM-NEXT: #APP 4815; SLM-NEXT: decb %dil # sched: [1:0.50] 4816; SLM-NEXT: decb (%rsi) # sched: [5:2.00] 4817; SLM-NEXT: #NO_APP 4818; SLM-NEXT: retq # sched: [4:1.00] 4819; 4820; SANDY-LABEL: test_dec8: 4821; SANDY: # %bb.0: 4822; SANDY-NEXT: #APP 4823; SANDY-NEXT: decb %dil # sched: [1:0.33] 4824; SANDY-NEXT: decb (%rsi) # sched: [7:1.00] 4825; SANDY-NEXT: #NO_APP 4826; SANDY-NEXT: retq # sched: [1:1.00] 4827; 4828; HASWELL-LABEL: test_dec8: 4829; HASWELL: # %bb.0: 4830; HASWELL-NEXT: #APP 4831; HASWELL-NEXT: decb %dil # sched: [1:0.25] 4832; HASWELL-NEXT: decb (%rsi) # sched: [7:1.00] 4833; HASWELL-NEXT: #NO_APP 4834; HASWELL-NEXT: retq # sched: [7:1.00] 4835; 4836; BROADWELL-LABEL: test_dec8: 4837; BROADWELL: # %bb.0: 4838; BROADWELL-NEXT: #APP 4839; BROADWELL-NEXT: decb %dil # sched: [1:0.25] 4840; BROADWELL-NEXT: decb (%rsi) # sched: [7:1.00] 4841; BROADWELL-NEXT: #NO_APP 4842; BROADWELL-NEXT: retq # sched: [7:1.00] 4843; 4844; SKYLAKE-LABEL: test_dec8: 4845; SKYLAKE: # %bb.0: 4846; SKYLAKE-NEXT: #APP 4847; SKYLAKE-NEXT: decb %dil # sched: [1:0.25] 4848; SKYLAKE-NEXT: decb (%rsi) # sched: [7:1.00] 4849; SKYLAKE-NEXT: #NO_APP 4850; SKYLAKE-NEXT: retq # sched: [7:1.00] 4851; 4852; SKX-LABEL: test_dec8: 4853; SKX: # %bb.0: 4854; SKX-NEXT: #APP 4855; SKX-NEXT: decb %dil # sched: [1:0.25] 4856; SKX-NEXT: decb (%rsi) # sched: [7:1.00] 4857; SKX-NEXT: #NO_APP 4858; SKX-NEXT: retq # sched: [7:1.00] 4859; 4860; BTVER2-LABEL: test_dec8: 4861; BTVER2: # %bb.0: 4862; BTVER2-NEXT: #APP 4863; BTVER2-NEXT: decb %dil # sched: [1:0.50] 4864; BTVER2-NEXT: decb (%rsi) # sched: [5:1.00] 4865; BTVER2-NEXT: #NO_APP 4866; BTVER2-NEXT: retq # sched: [4:1.00] 4867; 4868; ZNVER1-LABEL: test_dec8: 4869; ZNVER1: # %bb.0: 4870; ZNVER1-NEXT: #APP 4871; ZNVER1-NEXT: decb %dil # sched: [1:0.25] 4872; ZNVER1-NEXT: decb (%rsi) # sched: [5:0.50] 4873; ZNVER1-NEXT: #NO_APP 4874; ZNVER1-NEXT: retq # sched: [1:0.50] 4875 tail call void asm "decb $0 \0A\09 decb $1", "r,*m"(i8 %a0, i8* %a1) nounwind 4876 ret void 4877} 4878define void @test_dec16(i16 %a0, i16* %a1) optsize { 4879; GENERIC-LABEL: test_dec16: 4880; GENERIC: # %bb.0: 4881; GENERIC-NEXT: #APP 4882; GENERIC-NEXT: decw %di # sched: [1:0.33] 4883; GENERIC-NEXT: decw (%rsi) # sched: [7:1.00] 4884; GENERIC-NEXT: #NO_APP 4885; GENERIC-NEXT: retq # sched: [1:1.00] 4886; 4887; ATOM-LABEL: test_dec16: 4888; ATOM: # %bb.0: 4889; ATOM-NEXT: #APP 4890; ATOM-NEXT: decw %di # sched: [1:0.50] 4891; ATOM-NEXT: decw (%rsi) # sched: [1:1.00] 4892; ATOM-NEXT: #NO_APP 4893; ATOM-NEXT: retq # sched: [79:39.50] 4894; 4895; SLM-LABEL: test_dec16: 4896; SLM: # %bb.0: 4897; SLM-NEXT: #APP 4898; SLM-NEXT: decw %di # sched: [1:0.50] 4899; SLM-NEXT: decw (%rsi) # sched: [5:2.00] 4900; SLM-NEXT: #NO_APP 4901; SLM-NEXT: retq # sched: [4:1.00] 4902; 4903; SANDY-LABEL: test_dec16: 4904; SANDY: # %bb.0: 4905; SANDY-NEXT: #APP 4906; SANDY-NEXT: decw %di # sched: [1:0.33] 4907; SANDY-NEXT: decw (%rsi) # sched: [7:1.00] 4908; SANDY-NEXT: #NO_APP 4909; SANDY-NEXT: retq # sched: [1:1.00] 4910; 4911; HASWELL-LABEL: test_dec16: 4912; HASWELL: # %bb.0: 4913; HASWELL-NEXT: #APP 4914; HASWELL-NEXT: decw %di # sched: [1:0.25] 4915; HASWELL-NEXT: decw (%rsi) # sched: [7:1.00] 4916; HASWELL-NEXT: #NO_APP 4917; HASWELL-NEXT: retq # sched: [7:1.00] 4918; 4919; BROADWELL-LABEL: test_dec16: 4920; BROADWELL: # %bb.0: 4921; BROADWELL-NEXT: #APP 4922; BROADWELL-NEXT: decw %di # sched: [1:0.25] 4923; BROADWELL-NEXT: decw (%rsi) # sched: [7:1.00] 4924; BROADWELL-NEXT: #NO_APP 4925; BROADWELL-NEXT: retq # sched: [7:1.00] 4926; 4927; SKYLAKE-LABEL: test_dec16: 4928; SKYLAKE: # %bb.0: 4929; SKYLAKE-NEXT: #APP 4930; SKYLAKE-NEXT: decw %di # sched: [1:0.25] 4931; SKYLAKE-NEXT: decw (%rsi) # sched: [7:1.00] 4932; SKYLAKE-NEXT: #NO_APP 4933; SKYLAKE-NEXT: retq # sched: [7:1.00] 4934; 4935; SKX-LABEL: test_dec16: 4936; SKX: # %bb.0: 4937; SKX-NEXT: #APP 4938; SKX-NEXT: decw %di # sched: [1:0.25] 4939; SKX-NEXT: decw (%rsi) # sched: [7:1.00] 4940; SKX-NEXT: #NO_APP 4941; SKX-NEXT: retq # sched: [7:1.00] 4942; 4943; BTVER2-LABEL: test_dec16: 4944; BTVER2: # %bb.0: 4945; BTVER2-NEXT: #APP 4946; BTVER2-NEXT: decw %di # sched: [1:0.50] 4947; BTVER2-NEXT: decw (%rsi) # sched: [5:1.00] 4948; BTVER2-NEXT: #NO_APP 4949; BTVER2-NEXT: retq # sched: [4:1.00] 4950; 4951; ZNVER1-LABEL: test_dec16: 4952; ZNVER1: # %bb.0: 4953; ZNVER1-NEXT: #APP 4954; ZNVER1-NEXT: decw %di # sched: [1:0.25] 4955; ZNVER1-NEXT: decw (%rsi) # sched: [5:0.50] 4956; ZNVER1-NEXT: #NO_APP 4957; ZNVER1-NEXT: retq # sched: [1:0.50] 4958 tail call void asm "decw $0 \0A\09 decw $1", "r,*m"(i16 %a0, i16* %a1) nounwind 4959 ret void 4960} 4961define void @test_dec32(i32 %a0, i32* %a1) optsize { 4962; GENERIC-LABEL: test_dec32: 4963; GENERIC: # %bb.0: 4964; GENERIC-NEXT: #APP 4965; GENERIC-NEXT: decl %edi # sched: [1:0.33] 4966; GENERIC-NEXT: decl (%rsi) # sched: [7:1.00] 4967; GENERIC-NEXT: #NO_APP 4968; GENERIC-NEXT: retq # sched: [1:1.00] 4969; 4970; ATOM-LABEL: test_dec32: 4971; ATOM: # %bb.0: 4972; ATOM-NEXT: #APP 4973; ATOM-NEXT: decl %edi # sched: [1:0.50] 4974; ATOM-NEXT: decl (%rsi) # sched: [1:1.00] 4975; ATOM-NEXT: #NO_APP 4976; ATOM-NEXT: retq # sched: [79:39.50] 4977; 4978; SLM-LABEL: test_dec32: 4979; SLM: # %bb.0: 4980; SLM-NEXT: #APP 4981; SLM-NEXT: decl %edi # sched: [1:0.50] 4982; SLM-NEXT: decl (%rsi) # sched: [5:2.00] 4983; SLM-NEXT: #NO_APP 4984; SLM-NEXT: retq # sched: [4:1.00] 4985; 4986; SANDY-LABEL: test_dec32: 4987; SANDY: # %bb.0: 4988; SANDY-NEXT: #APP 4989; SANDY-NEXT: decl %edi # sched: [1:0.33] 4990; SANDY-NEXT: decl (%rsi) # sched: [7:1.00] 4991; SANDY-NEXT: #NO_APP 4992; SANDY-NEXT: retq # sched: [1:1.00] 4993; 4994; HASWELL-LABEL: test_dec32: 4995; HASWELL: # %bb.0: 4996; HASWELL-NEXT: #APP 4997; HASWELL-NEXT: decl %edi # sched: [1:0.25] 4998; HASWELL-NEXT: decl (%rsi) # sched: [7:1.00] 4999; HASWELL-NEXT: #NO_APP 5000; HASWELL-NEXT: retq # sched: [7:1.00] 5001; 5002; BROADWELL-LABEL: test_dec32: 5003; BROADWELL: # %bb.0: 5004; BROADWELL-NEXT: #APP 5005; BROADWELL-NEXT: decl %edi # sched: [1:0.25] 5006; BROADWELL-NEXT: decl (%rsi) # sched: [7:1.00] 5007; BROADWELL-NEXT: #NO_APP 5008; BROADWELL-NEXT: retq # sched: [7:1.00] 5009; 5010; SKYLAKE-LABEL: test_dec32: 5011; SKYLAKE: # %bb.0: 5012; SKYLAKE-NEXT: #APP 5013; SKYLAKE-NEXT: decl %edi # sched: [1:0.25] 5014; SKYLAKE-NEXT: decl (%rsi) # sched: [7:1.00] 5015; SKYLAKE-NEXT: #NO_APP 5016; SKYLAKE-NEXT: retq # sched: [7:1.00] 5017; 5018; SKX-LABEL: test_dec32: 5019; SKX: # %bb.0: 5020; SKX-NEXT: #APP 5021; SKX-NEXT: decl %edi # sched: [1:0.25] 5022; SKX-NEXT: decl (%rsi) # sched: [7:1.00] 5023; SKX-NEXT: #NO_APP 5024; SKX-NEXT: retq # sched: [7:1.00] 5025; 5026; BTVER2-LABEL: test_dec32: 5027; BTVER2: # %bb.0: 5028; BTVER2-NEXT: #APP 5029; BTVER2-NEXT: decl %edi # sched: [1:0.50] 5030; BTVER2-NEXT: decl (%rsi) # sched: [5:1.00] 5031; BTVER2-NEXT: #NO_APP 5032; BTVER2-NEXT: retq # sched: [4:1.00] 5033; 5034; ZNVER1-LABEL: test_dec32: 5035; ZNVER1: # %bb.0: 5036; ZNVER1-NEXT: #APP 5037; ZNVER1-NEXT: decl %edi # sched: [1:0.25] 5038; ZNVER1-NEXT: decl (%rsi) # sched: [5:0.50] 5039; ZNVER1-NEXT: #NO_APP 5040; ZNVER1-NEXT: retq # sched: [1:0.50] 5041 tail call void asm "decl $0 \0A\09 decl $1", "r,*m"(i32 %a0, i32* %a1) nounwind 5042 ret void 5043} 5044define void @test_dec64(i64 %a0, i64* %a1) optsize { 5045; GENERIC-LABEL: test_dec64: 5046; GENERIC: # %bb.0: 5047; GENERIC-NEXT: #APP 5048; GENERIC-NEXT: decq %rdi # sched: [1:0.33] 5049; GENERIC-NEXT: decq (%rsi) # sched: [7:1.00] 5050; GENERIC-NEXT: #NO_APP 5051; GENERIC-NEXT: retq # sched: [1:1.00] 5052; 5053; ATOM-LABEL: test_dec64: 5054; ATOM: # %bb.0: 5055; ATOM-NEXT: #APP 5056; ATOM-NEXT: decq %rdi # sched: [1:0.50] 5057; ATOM-NEXT: decq (%rsi) # sched: [1:1.00] 5058; ATOM-NEXT: #NO_APP 5059; ATOM-NEXT: retq # sched: [79:39.50] 5060; 5061; SLM-LABEL: test_dec64: 5062; SLM: # %bb.0: 5063; SLM-NEXT: #APP 5064; SLM-NEXT: decq %rdi # sched: [1:0.50] 5065; SLM-NEXT: decq (%rsi) # sched: [5:2.00] 5066; SLM-NEXT: #NO_APP 5067; SLM-NEXT: retq # sched: [4:1.00] 5068; 5069; SANDY-LABEL: test_dec64: 5070; SANDY: # %bb.0: 5071; SANDY-NEXT: #APP 5072; SANDY-NEXT: decq %rdi # sched: [1:0.33] 5073; SANDY-NEXT: decq (%rsi) # sched: [7:1.00] 5074; SANDY-NEXT: #NO_APP 5075; SANDY-NEXT: retq # sched: [1:1.00] 5076; 5077; HASWELL-LABEL: test_dec64: 5078; HASWELL: # %bb.0: 5079; HASWELL-NEXT: #APP 5080; HASWELL-NEXT: decq %rdi # sched: [1:0.25] 5081; HASWELL-NEXT: decq (%rsi) # sched: [7:1.00] 5082; HASWELL-NEXT: #NO_APP 5083; HASWELL-NEXT: retq # sched: [7:1.00] 5084; 5085; BROADWELL-LABEL: test_dec64: 5086; BROADWELL: # %bb.0: 5087; BROADWELL-NEXT: #APP 5088; BROADWELL-NEXT: decq %rdi # sched: [1:0.25] 5089; BROADWELL-NEXT: decq (%rsi) # sched: [7:1.00] 5090; BROADWELL-NEXT: #NO_APP 5091; BROADWELL-NEXT: retq # sched: [7:1.00] 5092; 5093; SKYLAKE-LABEL: test_dec64: 5094; SKYLAKE: # %bb.0: 5095; SKYLAKE-NEXT: #APP 5096; SKYLAKE-NEXT: decq %rdi # sched: [1:0.25] 5097; SKYLAKE-NEXT: decq (%rsi) # sched: [7:1.00] 5098; SKYLAKE-NEXT: #NO_APP 5099; SKYLAKE-NEXT: retq # sched: [7:1.00] 5100; 5101; SKX-LABEL: test_dec64: 5102; SKX: # %bb.0: 5103; SKX-NEXT: #APP 5104; SKX-NEXT: decq %rdi # sched: [1:0.25] 5105; SKX-NEXT: decq (%rsi) # sched: [7:1.00] 5106; SKX-NEXT: #NO_APP 5107; SKX-NEXT: retq # sched: [7:1.00] 5108; 5109; BTVER2-LABEL: test_dec64: 5110; BTVER2: # %bb.0: 5111; BTVER2-NEXT: #APP 5112; BTVER2-NEXT: decq %rdi # sched: [1:0.50] 5113; BTVER2-NEXT: decq (%rsi) # sched: [5:1.00] 5114; BTVER2-NEXT: #NO_APP 5115; BTVER2-NEXT: retq # sched: [4:1.00] 5116; 5117; ZNVER1-LABEL: test_dec64: 5118; ZNVER1: # %bb.0: 5119; ZNVER1-NEXT: #APP 5120; ZNVER1-NEXT: decq %rdi # sched: [1:0.25] 5121; ZNVER1-NEXT: decq (%rsi) # sched: [5:0.50] 5122; ZNVER1-NEXT: #NO_APP 5123; ZNVER1-NEXT: retq # sched: [1:0.50] 5124 tail call void asm "decq $0 \0A\09 decq $1", "r,*m"(i64 %a0, i64* %a1) nounwind 5125 ret void 5126} 5127 5128define void @test_div(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 5129; GENERIC-LABEL: test_div: 5130; GENERIC: # %bb.0: 5131; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5132; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5133; GENERIC-NEXT: #APP 5134; GENERIC-NEXT: divb %dil # sched: [25:10.00] 5135; GENERIC-NEXT: divb (%r8) # sched: [30:10.00] 5136; GENERIC-NEXT: divw %si # sched: [25:10.00] 5137; GENERIC-NEXT: divw (%r9) # sched: [30:10.00] 5138; GENERIC-NEXT: divl %edx # sched: [25:10.00] 5139; GENERIC-NEXT: divl (%rax) # sched: [30:10.00] 5140; GENERIC-NEXT: divq %rcx # sched: [25:10.00] 5141; GENERIC-NEXT: divq (%r10) # sched: [30:10.00] 5142; GENERIC-NEXT: #NO_APP 5143; GENERIC-NEXT: retq # sched: [1:1.00] 5144; 5145; ATOM-LABEL: test_div: 5146; ATOM: # %bb.0: 5147; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 5148; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 5149; ATOM-NEXT: #APP 5150; ATOM-NEXT: divb %dil # sched: [50:25.00] 5151; ATOM-NEXT: divb (%r8) # sched: [68:34.00] 5152; ATOM-NEXT: divw %si # sched: [50:25.00] 5153; ATOM-NEXT: divw (%r9) # sched: [50:25.00] 5154; ATOM-NEXT: divl %edx # sched: [50:25.00] 5155; ATOM-NEXT: divl (%rax) # sched: [50:25.00] 5156; ATOM-NEXT: divq %rcx # sched: [130:65.00] 5157; ATOM-NEXT: divq (%r10) # sched: [130:65.00] 5158; ATOM-NEXT: #NO_APP 5159; ATOM-NEXT: retq # sched: [79:39.50] 5160; 5161; SLM-LABEL: test_div: 5162; SLM: # %bb.0: 5163; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 5164; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 5165; SLM-NEXT: #APP 5166; SLM-NEXT: divb %dil # sched: [25:25.00] 5167; SLM-NEXT: divb (%r8) # sched: [29:25.00] 5168; SLM-NEXT: divw %si # sched: [25:25.00] 5169; SLM-NEXT: divw (%r9) # sched: [29:25.00] 5170; SLM-NEXT: divl %edx # sched: [25:25.00] 5171; SLM-NEXT: divl (%rax) # sched: [29:25.00] 5172; SLM-NEXT: divq %rcx # sched: [25:25.00] 5173; SLM-NEXT: divq (%r10) # sched: [29:25.00] 5174; SLM-NEXT: #NO_APP 5175; SLM-NEXT: retq # sched: [4:1.00] 5176; 5177; SANDY-LABEL: test_div: 5178; SANDY: # %bb.0: 5179; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5180; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5181; SANDY-NEXT: #APP 5182; SANDY-NEXT: divb %dil # sched: [25:10.00] 5183; SANDY-NEXT: divb (%r8) # sched: [30:10.00] 5184; SANDY-NEXT: divw %si # sched: [25:10.00] 5185; SANDY-NEXT: divw (%r9) # sched: [30:10.00] 5186; SANDY-NEXT: divl %edx # sched: [25:10.00] 5187; SANDY-NEXT: divl (%rax) # sched: [30:10.00] 5188; SANDY-NEXT: divq %rcx # sched: [25:10.00] 5189; SANDY-NEXT: divq (%r10) # sched: [30:10.00] 5190; SANDY-NEXT: #NO_APP 5191; SANDY-NEXT: retq # sched: [1:1.00] 5192; 5193; HASWELL-LABEL: test_div: 5194; HASWELL: # %bb.0: 5195; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5196; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5197; HASWELL-NEXT: #APP 5198; HASWELL-NEXT: divb %dil # sched: [22:1.00] 5199; HASWELL-NEXT: divb (%r8) # sched: [29:10.00] 5200; HASWELL-NEXT: divw %si # sched: [98:8.00] 5201; HASWELL-NEXT: divw (%r9) # sched: [29:10.00] 5202; HASWELL-NEXT: divl %edx # sched: [98:8.00] 5203; HASWELL-NEXT: divl (%rax) # sched: [29:10.00] 5204; HASWELL-NEXT: divq %rcx # sched: [98:8.00] 5205; HASWELL-NEXT: divq (%r10) # sched: [29:10.00] 5206; HASWELL-NEXT: #NO_APP 5207; HASWELL-NEXT: retq # sched: [7:1.00] 5208; 5209; BROADWELL-LABEL: test_div: 5210; BROADWELL: # %bb.0: 5211; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5212; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5213; BROADWELL-NEXT: #APP 5214; BROADWELL-NEXT: divb %dil # sched: [25:10.00] 5215; BROADWELL-NEXT: divb (%r8) # sched: [34:2.00] 5216; BROADWELL-NEXT: divw %si # sched: [80:8.00] 5217; BROADWELL-NEXT: divw (%r9) # sched: [34:2.00] 5218; BROADWELL-NEXT: divl %edx # sched: [80:8.00] 5219; BROADWELL-NEXT: divl (%rax) # sched: [34:2.00] 5220; BROADWELL-NEXT: divq %rcx # sched: [80:8.00] 5221; BROADWELL-NEXT: divq (%r10) # sched: [34:2.00] 5222; BROADWELL-NEXT: #NO_APP 5223; BROADWELL-NEXT: retq # sched: [7:1.00] 5224; 5225; SKYLAKE-LABEL: test_div: 5226; SKYLAKE: # %bb.0: 5227; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5228; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5229; SKYLAKE-NEXT: #APP 5230; SKYLAKE-NEXT: divb %dil # sched: [25:10.00] 5231; SKYLAKE-NEXT: divb (%r8) # sched: [29:10.00] 5232; SKYLAKE-NEXT: divw %si # sched: [76:8.00] 5233; SKYLAKE-NEXT: divw (%r9) # sched: [29:10.00] 5234; SKYLAKE-NEXT: divl %edx # sched: [76:8.00] 5235; SKYLAKE-NEXT: divl (%rax) # sched: [29:10.00] 5236; SKYLAKE-NEXT: divq %rcx # sched: [76:8.00] 5237; SKYLAKE-NEXT: divq (%r10) # sched: [29:10.00] 5238; SKYLAKE-NEXT: #NO_APP 5239; SKYLAKE-NEXT: retq # sched: [7:1.00] 5240; 5241; SKX-LABEL: test_div: 5242; SKX: # %bb.0: 5243; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5244; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5245; SKX-NEXT: #APP 5246; SKX-NEXT: divb %dil # sched: [25:10.00] 5247; SKX-NEXT: divb (%r8) # sched: [29:10.00] 5248; SKX-NEXT: divw %si # sched: [76:8.00] 5249; SKX-NEXT: divw (%r9) # sched: [29:10.00] 5250; SKX-NEXT: divl %edx # sched: [76:8.00] 5251; SKX-NEXT: divl (%rax) # sched: [29:10.00] 5252; SKX-NEXT: divq %rcx # sched: [76:8.00] 5253; SKX-NEXT: divq (%r10) # sched: [29:10.00] 5254; SKX-NEXT: #NO_APP 5255; SKX-NEXT: retq # sched: [7:1.00] 5256; 5257; BTVER2-LABEL: test_div: 5258; BTVER2: # %bb.0: 5259; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 5260; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 5261; BTVER2-NEXT: #APP 5262; BTVER2-NEXT: divb %dil # sched: [12:12.00] 5263; BTVER2-NEXT: divb (%r8) # sched: [15:12.00] 5264; BTVER2-NEXT: divw %si # sched: [17:17.00] 5265; BTVER2-NEXT: divw (%r9) # sched: [20:17.00] 5266; BTVER2-NEXT: divl %edx # sched: [25:25.00] 5267; BTVER2-NEXT: divl (%rax) # sched: [28:25.00] 5268; BTVER2-NEXT: divq %rcx # sched: [41:41.00] 5269; BTVER2-NEXT: divq (%r10) # sched: [44:41.00] 5270; BTVER2-NEXT: #NO_APP 5271; BTVER2-NEXT: retq # sched: [4:1.00] 5272; 5273; ZNVER1-LABEL: test_div: 5274; ZNVER1: # %bb.0: 5275; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 5276; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 5277; ZNVER1-NEXT: #APP 5278; ZNVER1-NEXT: divb %dil # sched: [15:15.00] 5279; ZNVER1-NEXT: divb (%r8) # sched: [19:15.00] 5280; ZNVER1-NEXT: divw %si # sched: [17:17.00] 5281; ZNVER1-NEXT: divw (%r9) # sched: [21:17.00] 5282; ZNVER1-NEXT: divl %edx # sched: [25:25.00] 5283; ZNVER1-NEXT: divl (%rax) # sched: [29:25.00] 5284; ZNVER1-NEXT: divq %rcx # sched: [41:41.00] 5285; ZNVER1-NEXT: divq (%r10) # sched: [45:41.00] 5286; ZNVER1-NEXT: #NO_APP 5287; ZNVER1-NEXT: retq # sched: [1:0.50] 5288 tail call void asm "divb $0 \0A\09 divb $4 \0A\09 divw $1 \0A\09 divw $5 \0A\09 divl $2 \0A\09 divl $6 \0A\09 divq $3 \0A\09 divq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 5289 ret void 5290} 5291 5292define void @test_enter() optsize { 5293; GENERIC-LABEL: test_enter: 5294; GENERIC: # %bb.0: 5295; GENERIC-NEXT: #APP 5296; GENERIC-NEXT: enter $7, $4095 # imm = 0xFFF 5297; GENERIC-NEXT: # sched: [100:0.33] 5298; GENERIC-NEXT: #NO_APP 5299; GENERIC-NEXT: retq # sched: [1:1.00] 5300; 5301; ATOM-LABEL: test_enter: 5302; ATOM: # %bb.0: 5303; ATOM-NEXT: #APP 5304; ATOM-NEXT: enter $7, $4095 # imm = 0xFFF 5305; ATOM-NEXT: # sched: [32:16.00] 5306; ATOM-NEXT: #NO_APP 5307; ATOM-NEXT: retq # sched: [79:39.50] 5308; 5309; SLM-LABEL: test_enter: 5310; SLM: # %bb.0: 5311; SLM-NEXT: #APP 5312; SLM-NEXT: enter $7, $4095 # imm = 0xFFF 5313; SLM-NEXT: # sched: [100:1.00] 5314; SLM-NEXT: #NO_APP 5315; SLM-NEXT: retq # sched: [4:1.00] 5316; 5317; SANDY-LABEL: test_enter: 5318; SANDY: # %bb.0: 5319; SANDY-NEXT: #APP 5320; SANDY-NEXT: enter $7, $4095 # imm = 0xFFF 5321; SANDY-NEXT: # sched: [100:0.33] 5322; SANDY-NEXT: #NO_APP 5323; SANDY-NEXT: retq # sched: [1:1.00] 5324; 5325; HASWELL-LABEL: test_enter: 5326; HASWELL: # %bb.0: 5327; HASWELL-NEXT: #APP 5328; HASWELL-NEXT: enter $7, $4095 # imm = 0xFFF 5329; HASWELL-NEXT: # sched: [100:0.25] 5330; HASWELL-NEXT: #NO_APP 5331; HASWELL-NEXT: retq # sched: [7:1.00] 5332; 5333; BROADWELL-LABEL: test_enter: 5334; BROADWELL: # %bb.0: 5335; BROADWELL-NEXT: #APP 5336; BROADWELL-NEXT: enter $7, $4095 # imm = 0xFFF 5337; BROADWELL-NEXT: # sched: [100:0.25] 5338; BROADWELL-NEXT: #NO_APP 5339; BROADWELL-NEXT: retq # sched: [7:1.00] 5340; 5341; SKYLAKE-LABEL: test_enter: 5342; SKYLAKE: # %bb.0: 5343; SKYLAKE-NEXT: #APP 5344; SKYLAKE-NEXT: enter $7, $4095 # imm = 0xFFF 5345; SKYLAKE-NEXT: # sched: [100:0.25] 5346; SKYLAKE-NEXT: #NO_APP 5347; SKYLAKE-NEXT: retq # sched: [7:1.00] 5348; 5349; SKX-LABEL: test_enter: 5350; SKX: # %bb.0: 5351; SKX-NEXT: #APP 5352; SKX-NEXT: enter $7, $4095 # imm = 0xFFF 5353; SKX-NEXT: # sched: [100:0.25] 5354; SKX-NEXT: #NO_APP 5355; SKX-NEXT: retq # sched: [7:1.00] 5356; 5357; BTVER2-LABEL: test_enter: 5358; BTVER2: # %bb.0: 5359; BTVER2-NEXT: #APP 5360; BTVER2-NEXT: enter $7, $4095 # imm = 0xFFF 5361; BTVER2-NEXT: # sched: [100:0.50] 5362; BTVER2-NEXT: #NO_APP 5363; BTVER2-NEXT: retq # sched: [4:1.00] 5364; 5365; ZNVER1-LABEL: test_enter: 5366; ZNVER1: # %bb.0: 5367; ZNVER1-NEXT: #APP 5368; ZNVER1-NEXT: enter $7, $4095 # imm = 0xFFF 5369; ZNVER1-NEXT: # sched: [100:0.25] 5370; ZNVER1-NEXT: #NO_APP 5371; ZNVER1-NEXT: retq # sched: [1:0.50] 5372 tail call void asm "enter $0, $1", "i,i"(i8 7, i16 4095) nounwind 5373 ret void 5374} 5375 5376define void @test_idiv(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 5377; GENERIC-LABEL: test_idiv: 5378; GENERIC: # %bb.0: 5379; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5380; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5381; GENERIC-NEXT: #APP 5382; GENERIC-NEXT: idivb %dil # sched: [25:10.00] 5383; GENERIC-NEXT: idivb (%r8) # sched: [30:10.00] 5384; GENERIC-NEXT: idivw %si # sched: [25:10.00] 5385; GENERIC-NEXT: idivw (%r9) # sched: [30:10.00] 5386; GENERIC-NEXT: idivl %edx # sched: [25:10.00] 5387; GENERIC-NEXT: idivl (%rax) # sched: [30:10.00] 5388; GENERIC-NEXT: idivq %rcx # sched: [25:10.00] 5389; GENERIC-NEXT: idivq (%r10) # sched: [30:10.00] 5390; GENERIC-NEXT: #NO_APP 5391; GENERIC-NEXT: retq # sched: [1:1.00] 5392; 5393; ATOM-LABEL: test_idiv: 5394; ATOM: # %bb.0: 5395; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 5396; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 5397; ATOM-NEXT: #APP 5398; ATOM-NEXT: idivb %dil # sched: [62:31.00] 5399; ATOM-NEXT: idivb (%r8) # sched: [62:31.00] 5400; ATOM-NEXT: idivw %si # sched: [62:31.00] 5401; ATOM-NEXT: idivw (%r9) # sched: [62:31.00] 5402; ATOM-NEXT: idivl %edx # sched: [62:31.00] 5403; ATOM-NEXT: idivl (%rax) # sched: [62:31.00] 5404; ATOM-NEXT: idivq %rcx # sched: [130:65.00] 5405; ATOM-NEXT: idivq (%r10) # sched: [130:65.00] 5406; ATOM-NEXT: #NO_APP 5407; ATOM-NEXT: retq # sched: [79:39.50] 5408; 5409; SLM-LABEL: test_idiv: 5410; SLM: # %bb.0: 5411; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 5412; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 5413; SLM-NEXT: #APP 5414; SLM-NEXT: idivb %dil # sched: [25:25.00] 5415; SLM-NEXT: idivb (%r8) # sched: [29:25.00] 5416; SLM-NEXT: idivw %si # sched: [25:25.00] 5417; SLM-NEXT: idivw (%r9) # sched: [29:25.00] 5418; SLM-NEXT: idivl %edx # sched: [25:25.00] 5419; SLM-NEXT: idivl (%rax) # sched: [29:25.00] 5420; SLM-NEXT: idivq %rcx # sched: [25:25.00] 5421; SLM-NEXT: idivq (%r10) # sched: [29:25.00] 5422; SLM-NEXT: #NO_APP 5423; SLM-NEXT: retq # sched: [4:1.00] 5424; 5425; SANDY-LABEL: test_idiv: 5426; SANDY: # %bb.0: 5427; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5428; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5429; SANDY-NEXT: #APP 5430; SANDY-NEXT: idivb %dil # sched: [25:10.00] 5431; SANDY-NEXT: idivb (%r8) # sched: [30:10.00] 5432; SANDY-NEXT: idivw %si # sched: [25:10.00] 5433; SANDY-NEXT: idivw (%r9) # sched: [30:10.00] 5434; SANDY-NEXT: idivl %edx # sched: [25:10.00] 5435; SANDY-NEXT: idivl (%rax) # sched: [30:10.00] 5436; SANDY-NEXT: idivq %rcx # sched: [25:10.00] 5437; SANDY-NEXT: idivq (%r10) # sched: [30:10.00] 5438; SANDY-NEXT: #NO_APP 5439; SANDY-NEXT: retq # sched: [1:1.00] 5440; 5441; HASWELL-LABEL: test_idiv: 5442; HASWELL: # %bb.0: 5443; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5444; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5445; HASWELL-NEXT: #APP 5446; HASWELL-NEXT: idivb %dil # sched: [23:1.00] 5447; HASWELL-NEXT: idivb (%r8) # sched: [29:10.00] 5448; HASWELL-NEXT: idivw %si # sched: [112:16.50] 5449; HASWELL-NEXT: idivw (%r9) # sched: [29:10.00] 5450; HASWELL-NEXT: idivl %edx # sched: [112:16.50] 5451; HASWELL-NEXT: idivl (%rax) # sched: [29:10.00] 5452; HASWELL-NEXT: idivq %rcx # sched: [112:16.50] 5453; HASWELL-NEXT: idivq (%r10) # sched: [29:10.00] 5454; HASWELL-NEXT: #NO_APP 5455; HASWELL-NEXT: retq # sched: [7:1.00] 5456; 5457; BROADWELL-LABEL: test_idiv: 5458; BROADWELL: # %bb.0: 5459; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5460; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5461; BROADWELL-NEXT: #APP 5462; BROADWELL-NEXT: idivb %dil # sched: [25:10.00] 5463; BROADWELL-NEXT: idivb (%r8) # sched: [35:2.00] 5464; BROADWELL-NEXT: idivw %si # sched: [25:10.00] 5465; BROADWELL-NEXT: idivw (%r9) # sched: [35:2.00] 5466; BROADWELL-NEXT: idivl %edx # sched: [25:10.00] 5467; BROADWELL-NEXT: idivl (%rax) # sched: [35:2.00] 5468; BROADWELL-NEXT: idivq %rcx # sched: [25:10.00] 5469; BROADWELL-NEXT: idivq (%r10) # sched: [35:2.00] 5470; BROADWELL-NEXT: #NO_APP 5471; BROADWELL-NEXT: retq # sched: [7:1.00] 5472; 5473; SKYLAKE-LABEL: test_idiv: 5474; SKYLAKE: # %bb.0: 5475; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5476; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5477; SKYLAKE-NEXT: #APP 5478; SKYLAKE-NEXT: idivb %dil # sched: [25:10.00] 5479; SKYLAKE-NEXT: idivb (%r8) # sched: [28:4.00] 5480; SKYLAKE-NEXT: idivw %si # sched: [102:16.50] 5481; SKYLAKE-NEXT: idivw (%r9) # sched: [28:4.00] 5482; SKYLAKE-NEXT: idivl %edx # sched: [102:16.50] 5483; SKYLAKE-NEXT: idivl (%rax) # sched: [28:4.00] 5484; SKYLAKE-NEXT: idivq %rcx # sched: [102:16.50] 5485; SKYLAKE-NEXT: idivq (%r10) # sched: [28:4.00] 5486; SKYLAKE-NEXT: #NO_APP 5487; SKYLAKE-NEXT: retq # sched: [7:1.00] 5488; 5489; SKX-LABEL: test_idiv: 5490; SKX: # %bb.0: 5491; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 5492; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 5493; SKX-NEXT: #APP 5494; SKX-NEXT: idivb %dil # sched: [25:10.00] 5495; SKX-NEXT: idivb (%r8) # sched: [28:4.00] 5496; SKX-NEXT: idivw %si # sched: [102:16.50] 5497; SKX-NEXT: idivw (%r9) # sched: [28:4.00] 5498; SKX-NEXT: idivl %edx # sched: [102:16.50] 5499; SKX-NEXT: idivl (%rax) # sched: [28:4.00] 5500; SKX-NEXT: idivq %rcx # sched: [102:16.50] 5501; SKX-NEXT: idivq (%r10) # sched: [28:4.00] 5502; SKX-NEXT: #NO_APP 5503; SKX-NEXT: retq # sched: [7:1.00] 5504; 5505; BTVER2-LABEL: test_idiv: 5506; BTVER2: # %bb.0: 5507; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 5508; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 5509; BTVER2-NEXT: #APP 5510; BTVER2-NEXT: idivb %dil # sched: [12:12.00] 5511; BTVER2-NEXT: idivb (%r8) # sched: [15:12.00] 5512; BTVER2-NEXT: idivw %si # sched: [17:17.00] 5513; BTVER2-NEXT: idivw (%r9) # sched: [20:17.00] 5514; BTVER2-NEXT: idivl %edx # sched: [25:25.00] 5515; BTVER2-NEXT: idivl (%rax) # sched: [28:25.00] 5516; BTVER2-NEXT: idivq %rcx # sched: [41:41.00] 5517; BTVER2-NEXT: idivq (%r10) # sched: [44:41.00] 5518; BTVER2-NEXT: #NO_APP 5519; BTVER2-NEXT: retq # sched: [4:1.00] 5520; 5521; ZNVER1-LABEL: test_idiv: 5522; ZNVER1: # %bb.0: 5523; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 5524; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 5525; ZNVER1-NEXT: #APP 5526; ZNVER1-NEXT: idivb %dil # sched: [15:15.00] 5527; ZNVER1-NEXT: idivb (%r8) # sched: [19:15.00] 5528; ZNVER1-NEXT: idivw %si # sched: [17:17.00] 5529; ZNVER1-NEXT: idivw (%r9) # sched: [21:17.00] 5530; ZNVER1-NEXT: idivl %edx # sched: [25:25.00] 5531; ZNVER1-NEXT: idivl (%rax) # sched: [29:25.00] 5532; ZNVER1-NEXT: idivq %rcx # sched: [41:41.00] 5533; ZNVER1-NEXT: idivq (%r10) # sched: [45:41.00] 5534; ZNVER1-NEXT: #NO_APP 5535; ZNVER1-NEXT: retq # sched: [1:0.50] 5536 tail call void asm "idivb $0 \0A\09 idivb $4 \0A\09 idivw $1 \0A\09 idivw $5 \0A\09 idivl $2 \0A\09 idivl $6 \0A\09 idivq $3 \0A\09 idivq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 5537 ret void 5538} 5539 5540define void @test_imul_8(i8 %a0, i8* %a1) optsize { 5541; GENERIC-LABEL: test_imul_8: 5542; GENERIC: # %bb.0: 5543; GENERIC-NEXT: #APP 5544; GENERIC-NEXT: imulb %dil # sched: [3:1.00] 5545; GENERIC-NEXT: imulb (%rsi) # sched: [8:1.00] 5546; GENERIC-NEXT: #NO_APP 5547; GENERIC-NEXT: retq # sched: [1:1.00] 5548; 5549; ATOM-LABEL: test_imul_8: 5550; ATOM: # %bb.0: 5551; ATOM-NEXT: #APP 5552; ATOM-NEXT: imulb %dil # sched: [7:3.50] 5553; ATOM-NEXT: imulb (%rsi) # sched: [7:3.50] 5554; ATOM-NEXT: #NO_APP 5555; ATOM-NEXT: retq # sched: [79:39.50] 5556; 5557; SLM-LABEL: test_imul_8: 5558; SLM: # %bb.0: 5559; SLM-NEXT: #APP 5560; SLM-NEXT: imulb %dil # sched: [3:1.00] 5561; SLM-NEXT: imulb (%rsi) # sched: [6:1.00] 5562; SLM-NEXT: #NO_APP 5563; SLM-NEXT: retq # sched: [4:1.00] 5564; 5565; SANDY-LABEL: test_imul_8: 5566; SANDY: # %bb.0: 5567; SANDY-NEXT: #APP 5568; SANDY-NEXT: imulb %dil # sched: [3:1.00] 5569; SANDY-NEXT: imulb (%rsi) # sched: [8:1.00] 5570; SANDY-NEXT: #NO_APP 5571; SANDY-NEXT: retq # sched: [1:1.00] 5572; 5573; HASWELL-LABEL: test_imul_8: 5574; HASWELL: # %bb.0: 5575; HASWELL-NEXT: #APP 5576; HASWELL-NEXT: imulb %dil # sched: [3:1.00] 5577; HASWELL-NEXT: imulb (%rsi) # sched: [8:1.00] 5578; HASWELL-NEXT: #NO_APP 5579; HASWELL-NEXT: retq # sched: [7:1.00] 5580; 5581; BROADWELL-LABEL: test_imul_8: 5582; BROADWELL: # %bb.0: 5583; BROADWELL-NEXT: #APP 5584; BROADWELL-NEXT: imulb %dil # sched: [3:1.00] 5585; BROADWELL-NEXT: imulb (%rsi) # sched: [8:1.00] 5586; BROADWELL-NEXT: #NO_APP 5587; BROADWELL-NEXT: retq # sched: [7:1.00] 5588; 5589; SKYLAKE-LABEL: test_imul_8: 5590; SKYLAKE: # %bb.0: 5591; SKYLAKE-NEXT: #APP 5592; SKYLAKE-NEXT: imulb %dil # sched: [3:1.00] 5593; SKYLAKE-NEXT: imulb (%rsi) # sched: [8:1.00] 5594; SKYLAKE-NEXT: #NO_APP 5595; SKYLAKE-NEXT: retq # sched: [7:1.00] 5596; 5597; SKX-LABEL: test_imul_8: 5598; SKX: # %bb.0: 5599; SKX-NEXT: #APP 5600; SKX-NEXT: imulb %dil # sched: [3:1.00] 5601; SKX-NEXT: imulb (%rsi) # sched: [8:1.00] 5602; SKX-NEXT: #NO_APP 5603; SKX-NEXT: retq # sched: [7:1.00] 5604; 5605; BTVER2-LABEL: test_imul_8: 5606; BTVER2: # %bb.0: 5607; BTVER2-NEXT: #APP 5608; BTVER2-NEXT: imulb %dil # sched: [3:1.00] 5609; BTVER2-NEXT: imulb (%rsi) # sched: [6:1.00] 5610; BTVER2-NEXT: #NO_APP 5611; BTVER2-NEXT: retq # sched: [4:1.00] 5612; 5613; ZNVER1-LABEL: test_imul_8: 5614; ZNVER1: # %bb.0: 5615; ZNVER1-NEXT: #APP 5616; ZNVER1-NEXT: imulb %dil # sched: [4:1.00] 5617; ZNVER1-NEXT: imulb (%rsi) # sched: [8:1.00] 5618; ZNVER1-NEXT: #NO_APP 5619; ZNVER1-NEXT: retq # sched: [1:0.50] 5620 tail call void asm "imulb $0 \0A\09 imulb $1", "r,*m"(i8 %a0, i8* %a1) nounwind 5621 ret void 5622} 5623define void @test_imul_16(i16 %a0, i16* %a1, i16 %a2) optsize { 5624; GENERIC-LABEL: test_imul_16: 5625; GENERIC: # %bb.0: 5626; GENERIC-NEXT: #APP 5627; GENERIC-NEXT: imulw %di # sched: [4:1.33] 5628; GENERIC-NEXT: imulw (%rsi) # sched: [9:1.33] 5629; GENERIC-NEXT: imulw %dx, %di # sched: [3:1.00] 5630; GENERIC-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5631; GENERIC-NEXT: imulw $511, %di, %di # imm = 0x1FF 5632; GENERIC-NEXT: # sched: [4:1.00] 5633; GENERIC-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5634; GENERIC-NEXT: # sched: [8:1.00] 5635; GENERIC-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5636; GENERIC-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5637; GENERIC-NEXT: #NO_APP 5638; GENERIC-NEXT: retq # sched: [1:1.00] 5639; 5640; ATOM-LABEL: test_imul_16: 5641; ATOM: # %bb.0: 5642; ATOM-NEXT: #APP 5643; ATOM-NEXT: imulw %di # sched: [7:3.50] 5644; ATOM-NEXT: imulw (%rsi) # sched: [8:4.00] 5645; ATOM-NEXT: imulw %dx, %di # sched: [6:3.00] 5646; ATOM-NEXT: imulw (%rsi), %di # sched: [7:3.50] 5647; ATOM-NEXT: imulw $511, %di, %di # imm = 0x1FF 5648; ATOM-NEXT: # sched: [6:3.00] 5649; ATOM-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5650; ATOM-NEXT: # sched: [7:3.50] 5651; ATOM-NEXT: imulw $7, %di, %di # sched: [6:3.00] 5652; ATOM-NEXT: imulw $7, (%rsi), %di # sched: [7:3.50] 5653; ATOM-NEXT: #NO_APP 5654; ATOM-NEXT: retq # sched: [79:39.50] 5655; 5656; SLM-LABEL: test_imul_16: 5657; SLM: # %bb.0: 5658; SLM-NEXT: #APP 5659; SLM-NEXT: imulw %di # sched: [3:1.00] 5660; SLM-NEXT: imulw (%rsi) # sched: [6:1.00] 5661; SLM-NEXT: imulw %dx, %di # sched: [3:1.00] 5662; SLM-NEXT: imulw (%rsi), %di # sched: [6:1.00] 5663; SLM-NEXT: imulw $511, %di, %di # imm = 0x1FF 5664; SLM-NEXT: # sched: [3:1.00] 5665; SLM-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5666; SLM-NEXT: # sched: [6:1.00] 5667; SLM-NEXT: imulw $7, %di, %di # sched: [3:1.00] 5668; SLM-NEXT: imulw $7, (%rsi), %di # sched: [6:1.00] 5669; SLM-NEXT: #NO_APP 5670; SLM-NEXT: retq # sched: [4:1.00] 5671; 5672; SANDY-LABEL: test_imul_16: 5673; SANDY: # %bb.0: 5674; SANDY-NEXT: #APP 5675; SANDY-NEXT: imulw %di # sched: [4:1.33] 5676; SANDY-NEXT: imulw (%rsi) # sched: [9:1.33] 5677; SANDY-NEXT: imulw %dx, %di # sched: [3:1.00] 5678; SANDY-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5679; SANDY-NEXT: imulw $511, %di, %di # imm = 0x1FF 5680; SANDY-NEXT: # sched: [4:1.00] 5681; SANDY-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5682; SANDY-NEXT: # sched: [8:1.00] 5683; SANDY-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5684; SANDY-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5685; SANDY-NEXT: #NO_APP 5686; SANDY-NEXT: retq # sched: [1:1.00] 5687; 5688; HASWELL-LABEL: test_imul_16: 5689; HASWELL: # %bb.0: 5690; HASWELL-NEXT: #APP 5691; HASWELL-NEXT: imulw %di # sched: [4:1.00] 5692; HASWELL-NEXT: imulw (%rsi) # sched: [9:1.00] 5693; HASWELL-NEXT: imulw %dx, %di # sched: [3:1.00] 5694; HASWELL-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5695; HASWELL-NEXT: imulw $511, %di, %di # imm = 0x1FF 5696; HASWELL-NEXT: # sched: [4:1.00] 5697; HASWELL-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5698; HASWELL-NEXT: # sched: [8:1.00] 5699; HASWELL-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5700; HASWELL-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5701; HASWELL-NEXT: #NO_APP 5702; HASWELL-NEXT: retq # sched: [7:1.00] 5703; 5704; BROADWELL-LABEL: test_imul_16: 5705; BROADWELL: # %bb.0: 5706; BROADWELL-NEXT: #APP 5707; BROADWELL-NEXT: imulw %di # sched: [4:1.00] 5708; BROADWELL-NEXT: imulw (%rsi) # sched: [9:1.00] 5709; BROADWELL-NEXT: imulw %dx, %di # sched: [3:1.00] 5710; BROADWELL-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5711; BROADWELL-NEXT: imulw $511, %di, %di # imm = 0x1FF 5712; BROADWELL-NEXT: # sched: [4:1.00] 5713; BROADWELL-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5714; BROADWELL-NEXT: # sched: [8:1.00] 5715; BROADWELL-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5716; BROADWELL-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5717; BROADWELL-NEXT: #NO_APP 5718; BROADWELL-NEXT: retq # sched: [7:1.00] 5719; 5720; SKYLAKE-LABEL: test_imul_16: 5721; SKYLAKE: # %bb.0: 5722; SKYLAKE-NEXT: #APP 5723; SKYLAKE-NEXT: imulw %di # sched: [4:1.00] 5724; SKYLAKE-NEXT: imulw (%rsi) # sched: [9:1.00] 5725; SKYLAKE-NEXT: imulw %dx, %di # sched: [3:1.00] 5726; SKYLAKE-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5727; SKYLAKE-NEXT: imulw $511, %di, %di # imm = 0x1FF 5728; SKYLAKE-NEXT: # sched: [4:1.00] 5729; SKYLAKE-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5730; SKYLAKE-NEXT: # sched: [8:1.00] 5731; SKYLAKE-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5732; SKYLAKE-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5733; SKYLAKE-NEXT: #NO_APP 5734; SKYLAKE-NEXT: retq # sched: [7:1.00] 5735; 5736; SKX-LABEL: test_imul_16: 5737; SKX: # %bb.0: 5738; SKX-NEXT: #APP 5739; SKX-NEXT: imulw %di # sched: [4:1.00] 5740; SKX-NEXT: imulw (%rsi) # sched: [9:1.00] 5741; SKX-NEXT: imulw %dx, %di # sched: [3:1.00] 5742; SKX-NEXT: imulw (%rsi), %di # sched: [8:1.00] 5743; SKX-NEXT: imulw $511, %di, %di # imm = 0x1FF 5744; SKX-NEXT: # sched: [4:1.00] 5745; SKX-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5746; SKX-NEXT: # sched: [8:1.00] 5747; SKX-NEXT: imulw $7, %di, %di # sched: [4:1.00] 5748; SKX-NEXT: imulw $7, (%rsi), %di # sched: [8:1.00] 5749; SKX-NEXT: #NO_APP 5750; SKX-NEXT: retq # sched: [7:1.00] 5751; 5752; BTVER2-LABEL: test_imul_16: 5753; BTVER2: # %bb.0: 5754; BTVER2-NEXT: #APP 5755; BTVER2-NEXT: imulw %di # sched: [3:1.00] 5756; BTVER2-NEXT: imulw (%rsi) # sched: [6:1.00] 5757; BTVER2-NEXT: imulw %dx, %di # sched: [3:1.00] 5758; BTVER2-NEXT: imulw (%rsi), %di # sched: [6:1.00] 5759; BTVER2-NEXT: imulw $511, %di, %di # imm = 0x1FF 5760; BTVER2-NEXT: # sched: [3:1.00] 5761; BTVER2-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5762; BTVER2-NEXT: # sched: [6:1.00] 5763; BTVER2-NEXT: imulw $7, %di, %di # sched: [3:1.00] 5764; BTVER2-NEXT: imulw $7, (%rsi), %di # sched: [6:1.00] 5765; BTVER2-NEXT: #NO_APP 5766; BTVER2-NEXT: retq # sched: [4:1.00] 5767; 5768; ZNVER1-LABEL: test_imul_16: 5769; ZNVER1: # %bb.0: 5770; ZNVER1-NEXT: #APP 5771; ZNVER1-NEXT: imulw %di # sched: [3:1.00] 5772; ZNVER1-NEXT: imulw (%rsi) # sched: [8:1.00] 5773; ZNVER1-NEXT: imulw %dx, %di # sched: [3:1.00] 5774; ZNVER1-NEXT: imulw (%rsi), %di # sched: [3:1.00] 5775; ZNVER1-NEXT: imulw $511, %di, %di # imm = 0x1FF 5776; ZNVER1-NEXT: # sched: [3:1.00] 5777; ZNVER1-NEXT: imulw $511, (%rsi), %di # imm = 0x1FF 5778; ZNVER1-NEXT: # sched: [3:1.00] 5779; ZNVER1-NEXT: imulw $7, %di, %di # sched: [3:1.00] 5780; ZNVER1-NEXT: imulw $7, (%rsi), %di # sched: [3:1.00] 5781; ZNVER1-NEXT: #NO_APP 5782; ZNVER1-NEXT: retq # sched: [1:0.50] 5783 tail call void asm "imulw $0 \0A\09 imulw $2 \0A\09 imulw $1, $0 \0A\09 imulw $2, $0 \0A\09 imulw $3, $0, $0 \0A\09 imulw $3, $2, $0 \0A\09 imulw $4, $0, $0 \0A\09 imulw $4, $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 5784 ret void 5785} 5786define void @test_imul_32(i32 %a0, i32* %a1, i32 %a2) optsize { 5787; GENERIC-LABEL: test_imul_32: 5788; GENERIC: # %bb.0: 5789; GENERIC-NEXT: #APP 5790; GENERIC-NEXT: imull %edi # sched: [4:1.00] 5791; GENERIC-NEXT: imull (%rsi) # sched: [9:1.00] 5792; GENERIC-NEXT: imull %edx, %edi # sched: [3:1.00] 5793; GENERIC-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5794; GENERIC-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5795; GENERIC-NEXT: # sched: [3:1.00] 5796; GENERIC-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5797; GENERIC-NEXT: # sched: [8:1.00] 5798; GENERIC-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5799; GENERIC-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5800; GENERIC-NEXT: #NO_APP 5801; GENERIC-NEXT: retq # sched: [1:1.00] 5802; 5803; ATOM-LABEL: test_imul_32: 5804; ATOM: # %bb.0: 5805; ATOM-NEXT: #APP 5806; ATOM-NEXT: imull %edi # sched: [6:3.00] 5807; ATOM-NEXT: imull (%rsi) # sched: [7:3.50] 5808; ATOM-NEXT: imull %edx, %edi # sched: [5:5.00] 5809; ATOM-NEXT: imull (%rsi), %edi # sched: [5:5.00] 5810; ATOM-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5811; ATOM-NEXT: # sched: [5:5.00] 5812; ATOM-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5813; ATOM-NEXT: # sched: [5:5.00] 5814; ATOM-NEXT: imull $7, %edi, %edi # sched: [5:5.00] 5815; ATOM-NEXT: imull $7, (%rsi), %edi # sched: [5:5.00] 5816; ATOM-NEXT: #NO_APP 5817; ATOM-NEXT: retq # sched: [79:39.50] 5818; 5819; SLM-LABEL: test_imul_32: 5820; SLM: # %bb.0: 5821; SLM-NEXT: #APP 5822; SLM-NEXT: imull %edi # sched: [3:1.00] 5823; SLM-NEXT: imull (%rsi) # sched: [6:1.00] 5824; SLM-NEXT: imull %edx, %edi # sched: [3:1.00] 5825; SLM-NEXT: imull (%rsi), %edi # sched: [6:1.00] 5826; SLM-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5827; SLM-NEXT: # sched: [3:1.00] 5828; SLM-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5829; SLM-NEXT: # sched: [6:1.00] 5830; SLM-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5831; SLM-NEXT: imull $7, (%rsi), %edi # sched: [6:1.00] 5832; SLM-NEXT: #NO_APP 5833; SLM-NEXT: retq # sched: [4:1.00] 5834; 5835; SANDY-LABEL: test_imul_32: 5836; SANDY: # %bb.0: 5837; SANDY-NEXT: #APP 5838; SANDY-NEXT: imull %edi # sched: [4:1.00] 5839; SANDY-NEXT: imull (%rsi) # sched: [9:1.00] 5840; SANDY-NEXT: imull %edx, %edi # sched: [3:1.00] 5841; SANDY-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5842; SANDY-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5843; SANDY-NEXT: # sched: [3:1.00] 5844; SANDY-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5845; SANDY-NEXT: # sched: [8:1.00] 5846; SANDY-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5847; SANDY-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5848; SANDY-NEXT: #NO_APP 5849; SANDY-NEXT: retq # sched: [1:1.00] 5850; 5851; HASWELL-LABEL: test_imul_32: 5852; HASWELL: # %bb.0: 5853; HASWELL-NEXT: #APP 5854; HASWELL-NEXT: imull %edi # sched: [4:1.00] 5855; HASWELL-NEXT: imull (%rsi) # sched: [9:1.00] 5856; HASWELL-NEXT: imull %edx, %edi # sched: [3:1.00] 5857; HASWELL-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5858; HASWELL-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5859; HASWELL-NEXT: # sched: [3:1.00] 5860; HASWELL-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5861; HASWELL-NEXT: # sched: [8:1.00] 5862; HASWELL-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5863; HASWELL-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5864; HASWELL-NEXT: #NO_APP 5865; HASWELL-NEXT: retq # sched: [7:1.00] 5866; 5867; BROADWELL-LABEL: test_imul_32: 5868; BROADWELL: # %bb.0: 5869; BROADWELL-NEXT: #APP 5870; BROADWELL-NEXT: imull %edi # sched: [4:1.00] 5871; BROADWELL-NEXT: imull (%rsi) # sched: [9:1.00] 5872; BROADWELL-NEXT: imull %edx, %edi # sched: [3:1.00] 5873; BROADWELL-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5874; BROADWELL-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5875; BROADWELL-NEXT: # sched: [3:1.00] 5876; BROADWELL-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5877; BROADWELL-NEXT: # sched: [8:1.00] 5878; BROADWELL-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5879; BROADWELL-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5880; BROADWELL-NEXT: #NO_APP 5881; BROADWELL-NEXT: retq # sched: [7:1.00] 5882; 5883; SKYLAKE-LABEL: test_imul_32: 5884; SKYLAKE: # %bb.0: 5885; SKYLAKE-NEXT: #APP 5886; SKYLAKE-NEXT: imull %edi # sched: [4:1.00] 5887; SKYLAKE-NEXT: imull (%rsi) # sched: [9:1.00] 5888; SKYLAKE-NEXT: imull %edx, %edi # sched: [3:1.00] 5889; SKYLAKE-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5890; SKYLAKE-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5891; SKYLAKE-NEXT: # sched: [3:1.00] 5892; SKYLAKE-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5893; SKYLAKE-NEXT: # sched: [8:1.00] 5894; SKYLAKE-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5895; SKYLAKE-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5896; SKYLAKE-NEXT: #NO_APP 5897; SKYLAKE-NEXT: retq # sched: [7:1.00] 5898; 5899; SKX-LABEL: test_imul_32: 5900; SKX: # %bb.0: 5901; SKX-NEXT: #APP 5902; SKX-NEXT: imull %edi # sched: [4:1.00] 5903; SKX-NEXT: imull (%rsi) # sched: [9:1.00] 5904; SKX-NEXT: imull %edx, %edi # sched: [3:1.00] 5905; SKX-NEXT: imull (%rsi), %edi # sched: [8:1.00] 5906; SKX-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5907; SKX-NEXT: # sched: [3:1.00] 5908; SKX-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5909; SKX-NEXT: # sched: [8:1.00] 5910; SKX-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5911; SKX-NEXT: imull $7, (%rsi), %edi # sched: [8:1.00] 5912; SKX-NEXT: #NO_APP 5913; SKX-NEXT: retq # sched: [7:1.00] 5914; 5915; BTVER2-LABEL: test_imul_32: 5916; BTVER2: # %bb.0: 5917; BTVER2-NEXT: #APP 5918; BTVER2-NEXT: imull %edi # sched: [3:1.00] 5919; BTVER2-NEXT: imull (%rsi) # sched: [6:1.00] 5920; BTVER2-NEXT: imull %edx, %edi # sched: [3:1.00] 5921; BTVER2-NEXT: imull (%rsi), %edi # sched: [6:1.00] 5922; BTVER2-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5923; BTVER2-NEXT: # sched: [3:1.00] 5924; BTVER2-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5925; BTVER2-NEXT: # sched: [6:1.00] 5926; BTVER2-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5927; BTVER2-NEXT: imull $7, (%rsi), %edi # sched: [6:1.00] 5928; BTVER2-NEXT: #NO_APP 5929; BTVER2-NEXT: retq # sched: [4:1.00] 5930; 5931; ZNVER1-LABEL: test_imul_32: 5932; ZNVER1: # %bb.0: 5933; ZNVER1-NEXT: #APP 5934; ZNVER1-NEXT: imull %edi # sched: [3:1.00] 5935; ZNVER1-NEXT: imull (%rsi) # sched: [8:1.00] 5936; ZNVER1-NEXT: imull %edx, %edi # sched: [3:1.00] 5937; ZNVER1-NEXT: imull (%rsi), %edi # sched: [3:1.00] 5938; ZNVER1-NEXT: imull $665536, %edi, %edi # imm = 0xA27C0 5939; ZNVER1-NEXT: # sched: [3:1.00] 5940; ZNVER1-NEXT: imull $665536, (%rsi), %edi # imm = 0xA27C0 5941; ZNVER1-NEXT: # sched: [3:1.00] 5942; ZNVER1-NEXT: imull $7, %edi, %edi # sched: [3:1.00] 5943; ZNVER1-NEXT: imull $7, (%rsi), %edi # sched: [3:1.00] 5944; ZNVER1-NEXT: #NO_APP 5945; ZNVER1-NEXT: retq # sched: [1:0.50] 5946 tail call void asm "imull $0 \0A\09 imull $2 \0A\09 imull $1, $0 \0A\09 imull $2, $0 \0A\09 imull $3, $0, $0 \0A\09 imull $3, $2, $0 \0A\09 imull $4, $0, $0 \0A\09 imull $4, $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 5947 ret void 5948} 5949define void @test_imul_64(i64 %a0, i64* %a1, i64 %a2) optsize { 5950; GENERIC-LABEL: test_imul_64: 5951; GENERIC: # %bb.0: 5952; GENERIC-NEXT: #APP 5953; GENERIC-NEXT: imulq %rdi # sched: [4:1.00] 5954; GENERIC-NEXT: imulq (%rsi) # sched: [9:1.00] 5955; GENERIC-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 5956; GENERIC-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 5957; GENERIC-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 5958; GENERIC-NEXT: # sched: [3:1.00] 5959; GENERIC-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 5960; GENERIC-NEXT: # sched: [8:1.00] 5961; GENERIC-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 5962; GENERIC-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 5963; GENERIC-NEXT: #NO_APP 5964; GENERIC-NEXT: retq # sched: [1:1.00] 5965; 5966; ATOM-LABEL: test_imul_64: 5967; ATOM: # %bb.0: 5968; ATOM-NEXT: #APP 5969; ATOM-NEXT: imulq %rdi # sched: [12:6.00] 5970; ATOM-NEXT: imulq (%rsi) # sched: [12:6.00] 5971; ATOM-NEXT: imulq %rdx, %rdi # sched: [12:6.00] 5972; ATOM-NEXT: imulq (%rsi), %rdi # sched: [12:6.00] 5973; ATOM-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 5974; ATOM-NEXT: # sched: [14:7.00] 5975; ATOM-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 5976; ATOM-NEXT: # sched: [14:7.00] 5977; ATOM-NEXT: imulq $7, %rdi, %rdi # sched: [14:7.00] 5978; ATOM-NEXT: imulq $7, (%rsi), %rdi # sched: [14:7.00] 5979; ATOM-NEXT: #NO_APP 5980; ATOM-NEXT: retq # sched: [79:39.50] 5981; 5982; SLM-LABEL: test_imul_64: 5983; SLM: # %bb.0: 5984; SLM-NEXT: #APP 5985; SLM-NEXT: imulq %rdi # sched: [3:1.00] 5986; SLM-NEXT: imulq (%rsi) # sched: [6:1.00] 5987; SLM-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 5988; SLM-NEXT: imulq (%rsi), %rdi # sched: [6:1.00] 5989; SLM-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 5990; SLM-NEXT: # sched: [3:1.00] 5991; SLM-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 5992; SLM-NEXT: # sched: [6:1.00] 5993; SLM-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 5994; SLM-NEXT: imulq $7, (%rsi), %rdi # sched: [6:1.00] 5995; SLM-NEXT: #NO_APP 5996; SLM-NEXT: retq # sched: [4:1.00] 5997; 5998; SANDY-LABEL: test_imul_64: 5999; SANDY: # %bb.0: 6000; SANDY-NEXT: #APP 6001; SANDY-NEXT: imulq %rdi # sched: [4:1.00] 6002; SANDY-NEXT: imulq (%rsi) # sched: [9:1.00] 6003; SANDY-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6004; SANDY-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6005; SANDY-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6006; SANDY-NEXT: # sched: [3:1.00] 6007; SANDY-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6008; SANDY-NEXT: # sched: [8:1.00] 6009; SANDY-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6010; SANDY-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6011; SANDY-NEXT: #NO_APP 6012; SANDY-NEXT: retq # sched: [1:1.00] 6013; 6014; HASWELL-LABEL: test_imul_64: 6015; HASWELL: # %bb.0: 6016; HASWELL-NEXT: #APP 6017; HASWELL-NEXT: imulq %rdi # sched: [4:1.00] 6018; HASWELL-NEXT: imulq (%rsi) # sched: [9:1.00] 6019; HASWELL-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6020; HASWELL-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6021; HASWELL-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6022; HASWELL-NEXT: # sched: [3:1.00] 6023; HASWELL-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6024; HASWELL-NEXT: # sched: [8:1.00] 6025; HASWELL-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6026; HASWELL-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6027; HASWELL-NEXT: #NO_APP 6028; HASWELL-NEXT: retq # sched: [7:1.00] 6029; 6030; BROADWELL-LABEL: test_imul_64: 6031; BROADWELL: # %bb.0: 6032; BROADWELL-NEXT: #APP 6033; BROADWELL-NEXT: imulq %rdi # sched: [4:1.00] 6034; BROADWELL-NEXT: imulq (%rsi) # sched: [9:1.00] 6035; BROADWELL-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6036; BROADWELL-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6037; BROADWELL-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6038; BROADWELL-NEXT: # sched: [3:1.00] 6039; BROADWELL-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6040; BROADWELL-NEXT: # sched: [8:1.00] 6041; BROADWELL-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6042; BROADWELL-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6043; BROADWELL-NEXT: #NO_APP 6044; BROADWELL-NEXT: retq # sched: [7:1.00] 6045; 6046; SKYLAKE-LABEL: test_imul_64: 6047; SKYLAKE: # %bb.0: 6048; SKYLAKE-NEXT: #APP 6049; SKYLAKE-NEXT: imulq %rdi # sched: [4:1.00] 6050; SKYLAKE-NEXT: imulq (%rsi) # sched: [9:1.00] 6051; SKYLAKE-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6052; SKYLAKE-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6053; SKYLAKE-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6054; SKYLAKE-NEXT: # sched: [3:1.00] 6055; SKYLAKE-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6056; SKYLAKE-NEXT: # sched: [8:1.00] 6057; SKYLAKE-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6058; SKYLAKE-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6059; SKYLAKE-NEXT: #NO_APP 6060; SKYLAKE-NEXT: retq # sched: [7:1.00] 6061; 6062; SKX-LABEL: test_imul_64: 6063; SKX: # %bb.0: 6064; SKX-NEXT: #APP 6065; SKX-NEXT: imulq %rdi # sched: [4:1.00] 6066; SKX-NEXT: imulq (%rsi) # sched: [9:1.00] 6067; SKX-NEXT: imulq %rdx, %rdi # sched: [3:1.00] 6068; SKX-NEXT: imulq (%rsi), %rdi # sched: [8:1.00] 6069; SKX-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6070; SKX-NEXT: # sched: [3:1.00] 6071; SKX-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6072; SKX-NEXT: # sched: [8:1.00] 6073; SKX-NEXT: imulq $7, %rdi, %rdi # sched: [3:1.00] 6074; SKX-NEXT: imulq $7, (%rsi), %rdi # sched: [8:1.00] 6075; SKX-NEXT: #NO_APP 6076; SKX-NEXT: retq # sched: [7:1.00] 6077; 6078; BTVER2-LABEL: test_imul_64: 6079; BTVER2: # %bb.0: 6080; BTVER2-NEXT: #APP 6081; BTVER2-NEXT: imulq %rdi # sched: [6:4.00] 6082; BTVER2-NEXT: imulq (%rsi) # sched: [9:4.00] 6083; BTVER2-NEXT: imulq %rdx, %rdi # sched: [6:4.00] 6084; BTVER2-NEXT: imulq (%rsi), %rdi # sched: [9:4.00] 6085; BTVER2-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6086; BTVER2-NEXT: # sched: [6:4.00] 6087; BTVER2-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6088; BTVER2-NEXT: # sched: [9:4.00] 6089; BTVER2-NEXT: imulq $7, %rdi, %rdi # sched: [6:4.00] 6090; BTVER2-NEXT: imulq $7, (%rsi), %rdi # sched: [9:4.00] 6091; BTVER2-NEXT: #NO_APP 6092; BTVER2-NEXT: retq # sched: [4:1.00] 6093; 6094; ZNVER1-LABEL: test_imul_64: 6095; ZNVER1: # %bb.0: 6096; ZNVER1-NEXT: #APP 6097; ZNVER1-NEXT: imulq %rdi # sched: [4:1.00] 6098; ZNVER1-NEXT: imulq (%rsi) # sched: [9:1.00] 6099; ZNVER1-NEXT: imulq %rdx, %rdi # sched: [4:1.00] 6100; ZNVER1-NEXT: imulq (%rsi), %rdi # sched: [4:1.00] 6101; ZNVER1-NEXT: imulq $665536, %rdi, %rdi # imm = 0xA27C0 6102; ZNVER1-NEXT: # sched: [4:1.00] 6103; ZNVER1-NEXT: imulq $665536, (%rsi), %rdi # imm = 0xA27C0 6104; ZNVER1-NEXT: # sched: [4:1.00] 6105; ZNVER1-NEXT: imulq $7, %rdi, %rdi # sched: [4:1.00] 6106; ZNVER1-NEXT: imulq $7, (%rsi), %rdi # sched: [4:1.00] 6107; ZNVER1-NEXT: #NO_APP 6108; ZNVER1-NEXT: retq # sched: [1:0.50] 6109 tail call void asm "imulq $0 \0A\09 imulq $2 \0A\09 imulq $1, $0 \0A\09 imulq $2, $0 \0A\09 imulq $3, $0, $0 \0A\09 imulq $3, $2, $0 \0A\09 imulq $4, $0, $0 \0A\09 imulq $4, $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 6110 ret void 6111} 6112 6113define void @test_in() optsize { 6114; GENERIC-LABEL: test_in: 6115; GENERIC: # %bb.0: 6116; GENERIC-NEXT: #APP 6117; GENERIC-NEXT: inb $7, %al # sched: [100:0.33] 6118; GENERIC-NEXT: inw $7, %ax # sched: [100:0.33] 6119; GENERIC-NEXT: inl $7, %eax # sched: [100:0.33] 6120; GENERIC-NEXT: inb %dx, %al # sched: [100:0.33] 6121; GENERIC-NEXT: inw %dx, %ax # sched: [100:0.33] 6122; GENERIC-NEXT: inl %dx, %eax # sched: [100:0.33] 6123; GENERIC-NEXT: #NO_APP 6124; GENERIC-NEXT: retq # sched: [1:1.00] 6125; 6126; ATOM-LABEL: test_in: 6127; ATOM: # %bb.0: 6128; ATOM-NEXT: #APP 6129; ATOM-NEXT: inb $7, %al # sched: [92:46.00] 6130; ATOM-NEXT: inw $7, %ax # sched: [92:46.00] 6131; ATOM-NEXT: inl $7, %eax # sched: [92:46.00] 6132; ATOM-NEXT: inb %dx, %al # sched: [94:47.00] 6133; ATOM-NEXT: inw %dx, %ax # sched: [94:47.00] 6134; ATOM-NEXT: inl %dx, %eax # sched: [94:47.00] 6135; ATOM-NEXT: #NO_APP 6136; ATOM-NEXT: retq # sched: [79:39.50] 6137; 6138; SLM-LABEL: test_in: 6139; SLM: # %bb.0: 6140; SLM-NEXT: #APP 6141; SLM-NEXT: inb $7, %al # sched: [100:1.00] 6142; SLM-NEXT: inw $7, %ax # sched: [100:1.00] 6143; SLM-NEXT: inl $7, %eax # sched: [100:1.00] 6144; SLM-NEXT: inb %dx, %al # sched: [100:1.00] 6145; SLM-NEXT: inw %dx, %ax # sched: [100:1.00] 6146; SLM-NEXT: inl %dx, %eax # sched: [100:1.00] 6147; SLM-NEXT: #NO_APP 6148; SLM-NEXT: retq # sched: [4:1.00] 6149; 6150; SANDY-LABEL: test_in: 6151; SANDY: # %bb.0: 6152; SANDY-NEXT: #APP 6153; SANDY-NEXT: inb $7, %al # sched: [100:0.33] 6154; SANDY-NEXT: inw $7, %ax # sched: [100:0.33] 6155; SANDY-NEXT: inl $7, %eax # sched: [100:0.33] 6156; SANDY-NEXT: inb %dx, %al # sched: [100:0.33] 6157; SANDY-NEXT: inw %dx, %ax # sched: [100:0.33] 6158; SANDY-NEXT: inl %dx, %eax # sched: [100:0.33] 6159; SANDY-NEXT: #NO_APP 6160; SANDY-NEXT: retq # sched: [1:1.00] 6161; 6162; HASWELL-LABEL: test_in: 6163; HASWELL: # %bb.0: 6164; HASWELL-NEXT: #APP 6165; HASWELL-NEXT: inb $7, %al # sched: [35:5.00] 6166; HASWELL-NEXT: inw $7, %ax # sched: [35:5.00] 6167; HASWELL-NEXT: inl $7, %eax # sched: [35:5.00] 6168; HASWELL-NEXT: inb %dx, %al # sched: [35:5.00] 6169; HASWELL-NEXT: inw %dx, %ax # sched: [35:5.00] 6170; HASWELL-NEXT: inl %dx, %eax # sched: [35:5.00] 6171; HASWELL-NEXT: #NO_APP 6172; HASWELL-NEXT: retq # sched: [7:1.00] 6173; 6174; BROADWELL-LABEL: test_in: 6175; BROADWELL: # %bb.0: 6176; BROADWELL-NEXT: #APP 6177; BROADWELL-NEXT: inb $7, %al # sched: [34:5.00] 6178; BROADWELL-NEXT: inw $7, %ax # sched: [34:5.00] 6179; BROADWELL-NEXT: inl $7, %eax # sched: [34:5.00] 6180; BROADWELL-NEXT: inb %dx, %al # sched: [34:5.00] 6181; BROADWELL-NEXT: inw %dx, %ax # sched: [34:5.00] 6182; BROADWELL-NEXT: inl %dx, %eax # sched: [34:5.00] 6183; BROADWELL-NEXT: #NO_APP 6184; BROADWELL-NEXT: retq # sched: [7:1.00] 6185; 6186; SKYLAKE-LABEL: test_in: 6187; SKYLAKE: # %bb.0: 6188; SKYLAKE-NEXT: #APP 6189; SKYLAKE-NEXT: inb $7, %al # sched: [35:5.00] 6190; SKYLAKE-NEXT: inw $7, %ax # sched: [35:5.00] 6191; SKYLAKE-NEXT: inl $7, %eax # sched: [35:5.00] 6192; SKYLAKE-NEXT: inb %dx, %al # sched: [35:5.00] 6193; SKYLAKE-NEXT: inw %dx, %ax # sched: [35:5.00] 6194; SKYLAKE-NEXT: inl %dx, %eax # sched: [35:5.00] 6195; SKYLAKE-NEXT: #NO_APP 6196; SKYLAKE-NEXT: retq # sched: [7:1.00] 6197; 6198; SKX-LABEL: test_in: 6199; SKX: # %bb.0: 6200; SKX-NEXT: #APP 6201; SKX-NEXT: inb $7, %al # sched: [35:5.00] 6202; SKX-NEXT: inw $7, %ax # sched: [35:5.00] 6203; SKX-NEXT: inl $7, %eax # sched: [35:5.00] 6204; SKX-NEXT: inb %dx, %al # sched: [35:5.00] 6205; SKX-NEXT: inw %dx, %ax # sched: [35:5.00] 6206; SKX-NEXT: inl %dx, %eax # sched: [35:5.00] 6207; SKX-NEXT: #NO_APP 6208; SKX-NEXT: retq # sched: [7:1.00] 6209; 6210; BTVER2-LABEL: test_in: 6211; BTVER2: # %bb.0: 6212; BTVER2-NEXT: #APP 6213; BTVER2-NEXT: inb $7, %al # sched: [100:0.50] 6214; BTVER2-NEXT: inw $7, %ax # sched: [100:0.50] 6215; BTVER2-NEXT: inl $7, %eax # sched: [100:0.50] 6216; BTVER2-NEXT: inb %dx, %al # sched: [100:0.50] 6217; BTVER2-NEXT: inw %dx, %ax # sched: [100:0.50] 6218; BTVER2-NEXT: inl %dx, %eax # sched: [100:0.50] 6219; BTVER2-NEXT: #NO_APP 6220; BTVER2-NEXT: retq # sched: [4:1.00] 6221; 6222; ZNVER1-LABEL: test_in: 6223; ZNVER1: # %bb.0: 6224; ZNVER1-NEXT: #APP 6225; ZNVER1-NEXT: inb $7, %al # sched: [100:0.25] 6226; ZNVER1-NEXT: inw $7, %ax # sched: [100:0.25] 6227; ZNVER1-NEXT: inl $7, %eax # sched: [100:0.25] 6228; ZNVER1-NEXT: inb %dx, %al # sched: [100:0.25] 6229; ZNVER1-NEXT: inw %dx, %ax # sched: [100:0.25] 6230; ZNVER1-NEXT: inl %dx, %eax # sched: [100:0.25] 6231; ZNVER1-NEXT: #NO_APP 6232; ZNVER1-NEXT: retq # sched: [1:0.50] 6233 tail call void asm "inb $0, %AL \0A\09 inw $0, %AX \0A\09 inl $0, %EAX \0A\09 inb %DX, %AL \0A\09 inw %DX, %AX \0A\09 inl %DX, %EAX", "i"(i8 7) nounwind 6234 ret void 6235} 6236 6237define void @test_inc8(i8 %a0, i8* %a1) optsize { 6238; GENERIC-LABEL: test_inc8: 6239; GENERIC: # %bb.0: 6240; GENERIC-NEXT: #APP 6241; GENERIC-NEXT: incb %dil # sched: [1:0.33] 6242; GENERIC-NEXT: incb (%rsi) # sched: [7:1.00] 6243; GENERIC-NEXT: #NO_APP 6244; GENERIC-NEXT: retq # sched: [1:1.00] 6245; 6246; ATOM-LABEL: test_inc8: 6247; ATOM: # %bb.0: 6248; ATOM-NEXT: #APP 6249; ATOM-NEXT: incb %dil # sched: [1:0.50] 6250; ATOM-NEXT: incb (%rsi) # sched: [1:1.00] 6251; ATOM-NEXT: #NO_APP 6252; ATOM-NEXT: retq # sched: [79:39.50] 6253; 6254; SLM-LABEL: test_inc8: 6255; SLM: # %bb.0: 6256; SLM-NEXT: #APP 6257; SLM-NEXT: incb %dil # sched: [1:0.50] 6258; SLM-NEXT: incb (%rsi) # sched: [5:2.00] 6259; SLM-NEXT: #NO_APP 6260; SLM-NEXT: retq # sched: [4:1.00] 6261; 6262; SANDY-LABEL: test_inc8: 6263; SANDY: # %bb.0: 6264; SANDY-NEXT: #APP 6265; SANDY-NEXT: incb %dil # sched: [1:0.33] 6266; SANDY-NEXT: incb (%rsi) # sched: [7:1.00] 6267; SANDY-NEXT: #NO_APP 6268; SANDY-NEXT: retq # sched: [1:1.00] 6269; 6270; HASWELL-LABEL: test_inc8: 6271; HASWELL: # %bb.0: 6272; HASWELL-NEXT: #APP 6273; HASWELL-NEXT: incb %dil # sched: [1:0.25] 6274; HASWELL-NEXT: incb (%rsi) # sched: [7:1.00] 6275; HASWELL-NEXT: #NO_APP 6276; HASWELL-NEXT: retq # sched: [7:1.00] 6277; 6278; BROADWELL-LABEL: test_inc8: 6279; BROADWELL: # %bb.0: 6280; BROADWELL-NEXT: #APP 6281; BROADWELL-NEXT: incb %dil # sched: [1:0.25] 6282; BROADWELL-NEXT: incb (%rsi) # sched: [7:1.00] 6283; BROADWELL-NEXT: #NO_APP 6284; BROADWELL-NEXT: retq # sched: [7:1.00] 6285; 6286; SKYLAKE-LABEL: test_inc8: 6287; SKYLAKE: # %bb.0: 6288; SKYLAKE-NEXT: #APP 6289; SKYLAKE-NEXT: incb %dil # sched: [1:0.25] 6290; SKYLAKE-NEXT: incb (%rsi) # sched: [7:1.00] 6291; SKYLAKE-NEXT: #NO_APP 6292; SKYLAKE-NEXT: retq # sched: [7:1.00] 6293; 6294; SKX-LABEL: test_inc8: 6295; SKX: # %bb.0: 6296; SKX-NEXT: #APP 6297; SKX-NEXT: incb %dil # sched: [1:0.25] 6298; SKX-NEXT: incb (%rsi) # sched: [7:1.00] 6299; SKX-NEXT: #NO_APP 6300; SKX-NEXT: retq # sched: [7:1.00] 6301; 6302; BTVER2-LABEL: test_inc8: 6303; BTVER2: # %bb.0: 6304; BTVER2-NEXT: #APP 6305; BTVER2-NEXT: incb %dil # sched: [1:0.50] 6306; BTVER2-NEXT: incb (%rsi) # sched: [5:1.00] 6307; BTVER2-NEXT: #NO_APP 6308; BTVER2-NEXT: retq # sched: [4:1.00] 6309; 6310; ZNVER1-LABEL: test_inc8: 6311; ZNVER1: # %bb.0: 6312; ZNVER1-NEXT: #APP 6313; ZNVER1-NEXT: incb %dil # sched: [1:0.25] 6314; ZNVER1-NEXT: incb (%rsi) # sched: [5:0.50] 6315; ZNVER1-NEXT: #NO_APP 6316; ZNVER1-NEXT: retq # sched: [1:0.50] 6317 tail call void asm "incb $0 \0A\09 incb $1", "r,*m"(i8 %a0, i8* %a1) nounwind 6318 ret void 6319} 6320define void @test_inc16(i16 %a0, i16* %a1) optsize { 6321; GENERIC-LABEL: test_inc16: 6322; GENERIC: # %bb.0: 6323; GENERIC-NEXT: #APP 6324; GENERIC-NEXT: incw %di # sched: [1:0.33] 6325; GENERIC-NEXT: incw (%rsi) # sched: [7:1.00] 6326; GENERIC-NEXT: #NO_APP 6327; GENERIC-NEXT: retq # sched: [1:1.00] 6328; 6329; ATOM-LABEL: test_inc16: 6330; ATOM: # %bb.0: 6331; ATOM-NEXT: #APP 6332; ATOM-NEXT: incw %di # sched: [1:0.50] 6333; ATOM-NEXT: incw (%rsi) # sched: [1:1.00] 6334; ATOM-NEXT: #NO_APP 6335; ATOM-NEXT: retq # sched: [79:39.50] 6336; 6337; SLM-LABEL: test_inc16: 6338; SLM: # %bb.0: 6339; SLM-NEXT: #APP 6340; SLM-NEXT: incw %di # sched: [1:0.50] 6341; SLM-NEXT: incw (%rsi) # sched: [5:2.00] 6342; SLM-NEXT: #NO_APP 6343; SLM-NEXT: retq # sched: [4:1.00] 6344; 6345; SANDY-LABEL: test_inc16: 6346; SANDY: # %bb.0: 6347; SANDY-NEXT: #APP 6348; SANDY-NEXT: incw %di # sched: [1:0.33] 6349; SANDY-NEXT: incw (%rsi) # sched: [7:1.00] 6350; SANDY-NEXT: #NO_APP 6351; SANDY-NEXT: retq # sched: [1:1.00] 6352; 6353; HASWELL-LABEL: test_inc16: 6354; HASWELL: # %bb.0: 6355; HASWELL-NEXT: #APP 6356; HASWELL-NEXT: incw %di # sched: [1:0.25] 6357; HASWELL-NEXT: incw (%rsi) # sched: [7:1.00] 6358; HASWELL-NEXT: #NO_APP 6359; HASWELL-NEXT: retq # sched: [7:1.00] 6360; 6361; BROADWELL-LABEL: test_inc16: 6362; BROADWELL: # %bb.0: 6363; BROADWELL-NEXT: #APP 6364; BROADWELL-NEXT: incw %di # sched: [1:0.25] 6365; BROADWELL-NEXT: incw (%rsi) # sched: [7:1.00] 6366; BROADWELL-NEXT: #NO_APP 6367; BROADWELL-NEXT: retq # sched: [7:1.00] 6368; 6369; SKYLAKE-LABEL: test_inc16: 6370; SKYLAKE: # %bb.0: 6371; SKYLAKE-NEXT: #APP 6372; SKYLAKE-NEXT: incw %di # sched: [1:0.25] 6373; SKYLAKE-NEXT: incw (%rsi) # sched: [7:1.00] 6374; SKYLAKE-NEXT: #NO_APP 6375; SKYLAKE-NEXT: retq # sched: [7:1.00] 6376; 6377; SKX-LABEL: test_inc16: 6378; SKX: # %bb.0: 6379; SKX-NEXT: #APP 6380; SKX-NEXT: incw %di # sched: [1:0.25] 6381; SKX-NEXT: incw (%rsi) # sched: [7:1.00] 6382; SKX-NEXT: #NO_APP 6383; SKX-NEXT: retq # sched: [7:1.00] 6384; 6385; BTVER2-LABEL: test_inc16: 6386; BTVER2: # %bb.0: 6387; BTVER2-NEXT: #APP 6388; BTVER2-NEXT: incw %di # sched: [1:0.50] 6389; BTVER2-NEXT: incw (%rsi) # sched: [5:1.00] 6390; BTVER2-NEXT: #NO_APP 6391; BTVER2-NEXT: retq # sched: [4:1.00] 6392; 6393; ZNVER1-LABEL: test_inc16: 6394; ZNVER1: # %bb.0: 6395; ZNVER1-NEXT: #APP 6396; ZNVER1-NEXT: incw %di # sched: [1:0.25] 6397; ZNVER1-NEXT: incw (%rsi) # sched: [5:0.50] 6398; ZNVER1-NEXT: #NO_APP 6399; ZNVER1-NEXT: retq # sched: [1:0.50] 6400 tail call void asm "incw $0 \0A\09 incw $1", "r,*m"(i16 %a0, i16* %a1) nounwind 6401 ret void 6402} 6403define void @test_inc32(i32 %a0, i32* %a1) optsize { 6404; GENERIC-LABEL: test_inc32: 6405; GENERIC: # %bb.0: 6406; GENERIC-NEXT: #APP 6407; GENERIC-NEXT: incl %edi # sched: [1:0.33] 6408; GENERIC-NEXT: incl (%rsi) # sched: [7:1.00] 6409; GENERIC-NEXT: #NO_APP 6410; GENERIC-NEXT: retq # sched: [1:1.00] 6411; 6412; ATOM-LABEL: test_inc32: 6413; ATOM: # %bb.0: 6414; ATOM-NEXT: #APP 6415; ATOM-NEXT: incl %edi # sched: [1:0.50] 6416; ATOM-NEXT: incl (%rsi) # sched: [1:1.00] 6417; ATOM-NEXT: #NO_APP 6418; ATOM-NEXT: retq # sched: [79:39.50] 6419; 6420; SLM-LABEL: test_inc32: 6421; SLM: # %bb.0: 6422; SLM-NEXT: #APP 6423; SLM-NEXT: incl %edi # sched: [1:0.50] 6424; SLM-NEXT: incl (%rsi) # sched: [5:2.00] 6425; SLM-NEXT: #NO_APP 6426; SLM-NEXT: retq # sched: [4:1.00] 6427; 6428; SANDY-LABEL: test_inc32: 6429; SANDY: # %bb.0: 6430; SANDY-NEXT: #APP 6431; SANDY-NEXT: incl %edi # sched: [1:0.33] 6432; SANDY-NEXT: incl (%rsi) # sched: [7:1.00] 6433; SANDY-NEXT: #NO_APP 6434; SANDY-NEXT: retq # sched: [1:1.00] 6435; 6436; HASWELL-LABEL: test_inc32: 6437; HASWELL: # %bb.0: 6438; HASWELL-NEXT: #APP 6439; HASWELL-NEXT: incl %edi # sched: [1:0.25] 6440; HASWELL-NEXT: incl (%rsi) # sched: [7:1.00] 6441; HASWELL-NEXT: #NO_APP 6442; HASWELL-NEXT: retq # sched: [7:1.00] 6443; 6444; BROADWELL-LABEL: test_inc32: 6445; BROADWELL: # %bb.0: 6446; BROADWELL-NEXT: #APP 6447; BROADWELL-NEXT: incl %edi # sched: [1:0.25] 6448; BROADWELL-NEXT: incl (%rsi) # sched: [7:1.00] 6449; BROADWELL-NEXT: #NO_APP 6450; BROADWELL-NEXT: retq # sched: [7:1.00] 6451; 6452; SKYLAKE-LABEL: test_inc32: 6453; SKYLAKE: # %bb.0: 6454; SKYLAKE-NEXT: #APP 6455; SKYLAKE-NEXT: incl %edi # sched: [1:0.25] 6456; SKYLAKE-NEXT: incl (%rsi) # sched: [7:1.00] 6457; SKYLAKE-NEXT: #NO_APP 6458; SKYLAKE-NEXT: retq # sched: [7:1.00] 6459; 6460; SKX-LABEL: test_inc32: 6461; SKX: # %bb.0: 6462; SKX-NEXT: #APP 6463; SKX-NEXT: incl %edi # sched: [1:0.25] 6464; SKX-NEXT: incl (%rsi) # sched: [7:1.00] 6465; SKX-NEXT: #NO_APP 6466; SKX-NEXT: retq # sched: [7:1.00] 6467; 6468; BTVER2-LABEL: test_inc32: 6469; BTVER2: # %bb.0: 6470; BTVER2-NEXT: #APP 6471; BTVER2-NEXT: incl %edi # sched: [1:0.50] 6472; BTVER2-NEXT: incl (%rsi) # sched: [5:1.00] 6473; BTVER2-NEXT: #NO_APP 6474; BTVER2-NEXT: retq # sched: [4:1.00] 6475; 6476; ZNVER1-LABEL: test_inc32: 6477; ZNVER1: # %bb.0: 6478; ZNVER1-NEXT: #APP 6479; ZNVER1-NEXT: incl %edi # sched: [1:0.25] 6480; ZNVER1-NEXT: incl (%rsi) # sched: [5:0.50] 6481; ZNVER1-NEXT: #NO_APP 6482; ZNVER1-NEXT: retq # sched: [1:0.50] 6483 tail call void asm "incl $0 \0A\09 incl $1", "r,*m"(i32 %a0, i32* %a1) nounwind 6484 ret void 6485} 6486define void @test_inc64(i64 %a0, i64* %a1) optsize { 6487; GENERIC-LABEL: test_inc64: 6488; GENERIC: # %bb.0: 6489; GENERIC-NEXT: #APP 6490; GENERIC-NEXT: incq %rdi # sched: [1:0.33] 6491; GENERIC-NEXT: incq (%rsi) # sched: [7:1.00] 6492; GENERIC-NEXT: #NO_APP 6493; GENERIC-NEXT: retq # sched: [1:1.00] 6494; 6495; ATOM-LABEL: test_inc64: 6496; ATOM: # %bb.0: 6497; ATOM-NEXT: #APP 6498; ATOM-NEXT: incq %rdi # sched: [1:0.50] 6499; ATOM-NEXT: incq (%rsi) # sched: [1:1.00] 6500; ATOM-NEXT: #NO_APP 6501; ATOM-NEXT: retq # sched: [79:39.50] 6502; 6503; SLM-LABEL: test_inc64: 6504; SLM: # %bb.0: 6505; SLM-NEXT: #APP 6506; SLM-NEXT: incq %rdi # sched: [1:0.50] 6507; SLM-NEXT: incq (%rsi) # sched: [5:2.00] 6508; SLM-NEXT: #NO_APP 6509; SLM-NEXT: retq # sched: [4:1.00] 6510; 6511; SANDY-LABEL: test_inc64: 6512; SANDY: # %bb.0: 6513; SANDY-NEXT: #APP 6514; SANDY-NEXT: incq %rdi # sched: [1:0.33] 6515; SANDY-NEXT: incq (%rsi) # sched: [7:1.00] 6516; SANDY-NEXT: #NO_APP 6517; SANDY-NEXT: retq # sched: [1:1.00] 6518; 6519; HASWELL-LABEL: test_inc64: 6520; HASWELL: # %bb.0: 6521; HASWELL-NEXT: #APP 6522; HASWELL-NEXT: incq %rdi # sched: [1:0.25] 6523; HASWELL-NEXT: incq (%rsi) # sched: [7:1.00] 6524; HASWELL-NEXT: #NO_APP 6525; HASWELL-NEXT: retq # sched: [7:1.00] 6526; 6527; BROADWELL-LABEL: test_inc64: 6528; BROADWELL: # %bb.0: 6529; BROADWELL-NEXT: #APP 6530; BROADWELL-NEXT: incq %rdi # sched: [1:0.25] 6531; BROADWELL-NEXT: incq (%rsi) # sched: [7:1.00] 6532; BROADWELL-NEXT: #NO_APP 6533; BROADWELL-NEXT: retq # sched: [7:1.00] 6534; 6535; SKYLAKE-LABEL: test_inc64: 6536; SKYLAKE: # %bb.0: 6537; SKYLAKE-NEXT: #APP 6538; SKYLAKE-NEXT: incq %rdi # sched: [1:0.25] 6539; SKYLAKE-NEXT: incq (%rsi) # sched: [7:1.00] 6540; SKYLAKE-NEXT: #NO_APP 6541; SKYLAKE-NEXT: retq # sched: [7:1.00] 6542; 6543; SKX-LABEL: test_inc64: 6544; SKX: # %bb.0: 6545; SKX-NEXT: #APP 6546; SKX-NEXT: incq %rdi # sched: [1:0.25] 6547; SKX-NEXT: incq (%rsi) # sched: [7:1.00] 6548; SKX-NEXT: #NO_APP 6549; SKX-NEXT: retq # sched: [7:1.00] 6550; 6551; BTVER2-LABEL: test_inc64: 6552; BTVER2: # %bb.0: 6553; BTVER2-NEXT: #APP 6554; BTVER2-NEXT: incq %rdi # sched: [1:0.50] 6555; BTVER2-NEXT: incq (%rsi) # sched: [5:1.00] 6556; BTVER2-NEXT: #NO_APP 6557; BTVER2-NEXT: retq # sched: [4:1.00] 6558; 6559; ZNVER1-LABEL: test_inc64: 6560; ZNVER1: # %bb.0: 6561; ZNVER1-NEXT: #APP 6562; ZNVER1-NEXT: incq %rdi # sched: [1:0.25] 6563; ZNVER1-NEXT: incq (%rsi) # sched: [5:0.50] 6564; ZNVER1-NEXT: #NO_APP 6565; ZNVER1-NEXT: retq # sched: [1:0.50] 6566 tail call void asm "incq $0 \0A\09 incq $1", "r,*m"(i64 %a0, i64* %a1) nounwind 6567 ret void 6568} 6569 6570define void @test_ins() optsize { 6571; GENERIC-LABEL: test_ins: 6572; GENERIC: # %bb.0: 6573; GENERIC-NEXT: #APP 6574; GENERIC-NEXT: insb %dx, %es:(%rdi) # sched: [100:0.33] 6575; GENERIC-NEXT: insw %dx, %es:(%rdi) # sched: [100:0.33] 6576; GENERIC-NEXT: insl %dx, %es:(%rdi) # sched: [100:0.33] 6577; GENERIC-NEXT: #NO_APP 6578; GENERIC-NEXT: retq # sched: [1:1.00] 6579; 6580; ATOM-LABEL: test_ins: 6581; ATOM: # %bb.0: 6582; ATOM-NEXT: #APP 6583; ATOM-NEXT: insb %dx, %es:(%rdi) # sched: [59:29.50] 6584; ATOM-NEXT: insw %dx, %es:(%rdi) # sched: [59:29.50] 6585; ATOM-NEXT: insl %dx, %es:(%rdi) # sched: [59:29.50] 6586; ATOM-NEXT: #NO_APP 6587; ATOM-NEXT: retq # sched: [79:39.50] 6588; 6589; SLM-LABEL: test_ins: 6590; SLM: # %bb.0: 6591; SLM-NEXT: #APP 6592; SLM-NEXT: insb %dx, %es:(%rdi) # sched: [100:1.00] 6593; SLM-NEXT: insw %dx, %es:(%rdi) # sched: [100:1.00] 6594; SLM-NEXT: insl %dx, %es:(%rdi) # sched: [100:1.00] 6595; SLM-NEXT: #NO_APP 6596; SLM-NEXT: retq # sched: [4:1.00] 6597; 6598; SANDY-LABEL: test_ins: 6599; SANDY: # %bb.0: 6600; SANDY-NEXT: #APP 6601; SANDY-NEXT: insb %dx, %es:(%rdi) # sched: [100:0.33] 6602; SANDY-NEXT: insw %dx, %es:(%rdi) # sched: [100:0.33] 6603; SANDY-NEXT: insl %dx, %es:(%rdi) # sched: [100:0.33] 6604; SANDY-NEXT: #NO_APP 6605; SANDY-NEXT: retq # sched: [1:1.00] 6606; 6607; HASWELL-LABEL: test_ins: 6608; HASWELL: # %bb.0: 6609; HASWELL-NEXT: #APP 6610; HASWELL-NEXT: insb %dx, %es:(%rdi) # sched: [21:1.25] 6611; HASWELL-NEXT: insw %dx, %es:(%rdi) # sched: [21:1.25] 6612; HASWELL-NEXT: insl %dx, %es:(%rdi) # sched: [21:1.25] 6613; HASWELL-NEXT: #NO_APP 6614; HASWELL-NEXT: retq # sched: [7:1.00] 6615; 6616; BROADWELL-LABEL: test_ins: 6617; BROADWELL: # %bb.0: 6618; BROADWELL-NEXT: #APP 6619; BROADWELL-NEXT: insb %dx, %es:(%rdi) # sched: [20:1.25] 6620; BROADWELL-NEXT: insw %dx, %es:(%rdi) # sched: [20:1.25] 6621; BROADWELL-NEXT: insl %dx, %es:(%rdi) # sched: [20:1.25] 6622; BROADWELL-NEXT: #NO_APP 6623; BROADWELL-NEXT: retq # sched: [7:1.00] 6624; 6625; SKYLAKE-LABEL: test_ins: 6626; SKYLAKE: # %bb.0: 6627; SKYLAKE-NEXT: #APP 6628; SKYLAKE-NEXT: insb %dx, %es:(%rdi) # sched: [20:1.25] 6629; SKYLAKE-NEXT: insw %dx, %es:(%rdi) # sched: [20:1.25] 6630; SKYLAKE-NEXT: insl %dx, %es:(%rdi) # sched: [20:1.25] 6631; SKYLAKE-NEXT: #NO_APP 6632; SKYLAKE-NEXT: retq # sched: [7:1.00] 6633; 6634; SKX-LABEL: test_ins: 6635; SKX: # %bb.0: 6636; SKX-NEXT: #APP 6637; SKX-NEXT: insb %dx, %es:(%rdi) # sched: [20:1.25] 6638; SKX-NEXT: insw %dx, %es:(%rdi) # sched: [20:1.25] 6639; SKX-NEXT: insl %dx, %es:(%rdi) # sched: [20:1.25] 6640; SKX-NEXT: #NO_APP 6641; SKX-NEXT: retq # sched: [7:1.00] 6642; 6643; BTVER2-LABEL: test_ins: 6644; BTVER2: # %bb.0: 6645; BTVER2-NEXT: #APP 6646; BTVER2-NEXT: insb %dx, %es:(%rdi) # sched: [100:0.50] 6647; BTVER2-NEXT: insw %dx, %es:(%rdi) # sched: [100:0.50] 6648; BTVER2-NEXT: insl %dx, %es:(%rdi) # sched: [100:0.50] 6649; BTVER2-NEXT: #NO_APP 6650; BTVER2-NEXT: retq # sched: [4:1.00] 6651; 6652; ZNVER1-LABEL: test_ins: 6653; ZNVER1: # %bb.0: 6654; ZNVER1-NEXT: #APP 6655; ZNVER1-NEXT: insb %dx, %es:(%rdi) # sched: [100:0.25] 6656; ZNVER1-NEXT: insw %dx, %es:(%rdi) # sched: [100:0.25] 6657; ZNVER1-NEXT: insl %dx, %es:(%rdi) # sched: [100:0.25] 6658; ZNVER1-NEXT: #NO_APP 6659; ZNVER1-NEXT: retq # sched: [1:0.50] 6660 call void asm sideeffect "insb \0A\09 insw \0A\09 insl", ""() 6661 ret void 6662} 6663 6664define void @test_int() optsize { 6665; GENERIC-LABEL: test_int: 6666; GENERIC: # %bb.0: 6667; GENERIC-NEXT: #APP 6668; GENERIC-NEXT: int $7 # sched: [100:0.33] 6669; GENERIC-NEXT: #NO_APP 6670; GENERIC-NEXT: retq # sched: [1:1.00] 6671; 6672; ATOM-LABEL: test_int: 6673; ATOM: # %bb.0: 6674; ATOM-NEXT: #APP 6675; ATOM-NEXT: int $7 # sched: [127:63.50] 6676; ATOM-NEXT: #NO_APP 6677; ATOM-NEXT: retq # sched: [79:39.50] 6678; 6679; SLM-LABEL: test_int: 6680; SLM: # %bb.0: 6681; SLM-NEXT: #APP 6682; SLM-NEXT: int $7 # sched: [100:1.00] 6683; SLM-NEXT: #NO_APP 6684; SLM-NEXT: retq # sched: [4:1.00] 6685; 6686; SANDY-LABEL: test_int: 6687; SANDY: # %bb.0: 6688; SANDY-NEXT: #APP 6689; SANDY-NEXT: int $7 # sched: [100:0.33] 6690; SANDY-NEXT: #NO_APP 6691; SANDY-NEXT: retq # sched: [1:1.00] 6692; 6693; HASWELL-LABEL: test_int: 6694; HASWELL: # %bb.0: 6695; HASWELL-NEXT: #APP 6696; HASWELL-NEXT: int $7 # sched: [100:0.25] 6697; HASWELL-NEXT: #NO_APP 6698; HASWELL-NEXT: retq # sched: [7:1.00] 6699; 6700; BROADWELL-LABEL: test_int: 6701; BROADWELL: # %bb.0: 6702; BROADWELL-NEXT: #APP 6703; BROADWELL-NEXT: int $7 # sched: [100:0.25] 6704; BROADWELL-NEXT: #NO_APP 6705; BROADWELL-NEXT: retq # sched: [7:1.00] 6706; 6707; SKYLAKE-LABEL: test_int: 6708; SKYLAKE: # %bb.0: 6709; SKYLAKE-NEXT: #APP 6710; SKYLAKE-NEXT: int $7 # sched: [100:0.25] 6711; SKYLAKE-NEXT: #NO_APP 6712; SKYLAKE-NEXT: retq # sched: [7:1.00] 6713; 6714; SKX-LABEL: test_int: 6715; SKX: # %bb.0: 6716; SKX-NEXT: #APP 6717; SKX-NEXT: int $7 # sched: [100:0.25] 6718; SKX-NEXT: #NO_APP 6719; SKX-NEXT: retq # sched: [7:1.00] 6720; 6721; BTVER2-LABEL: test_int: 6722; BTVER2: # %bb.0: 6723; BTVER2-NEXT: #APP 6724; BTVER2-NEXT: int $7 # sched: [100:0.50] 6725; BTVER2-NEXT: #NO_APP 6726; BTVER2-NEXT: retq # sched: [4:1.00] 6727; 6728; ZNVER1-LABEL: test_int: 6729; ZNVER1: # %bb.0: 6730; ZNVER1-NEXT: #APP 6731; ZNVER1-NEXT: int $7 # sched: [100:0.25] 6732; ZNVER1-NEXT: #NO_APP 6733; ZNVER1-NEXT: retq # sched: [1:0.50] 6734 call void asm sideeffect "int $0", "i"(i8 7) 6735 ret void 6736} 6737 6738define void @test_invlpg_invlpga(i8 *%a0) optsize { 6739; GENERIC-LABEL: test_invlpg_invlpga: 6740; GENERIC: # %bb.0: 6741; GENERIC-NEXT: #APP 6742; GENERIC-NEXT: invlpg (%rdi) # sched: [100:0.33] 6743; GENERIC-NEXT: invlpga %rax, %ecx # sched: [100:0.33] 6744; GENERIC-NEXT: #NO_APP 6745; GENERIC-NEXT: retq # sched: [1:1.00] 6746; 6747; ATOM-LABEL: test_invlpg_invlpga: 6748; ATOM: # %bb.0: 6749; ATOM-NEXT: #APP 6750; ATOM-NEXT: invlpg (%rdi) # sched: [71:35.50] 6751; ATOM-NEXT: invlpga %rax, %ecx # sched: [71:35.50] 6752; ATOM-NEXT: #NO_APP 6753; ATOM-NEXT: retq # sched: [79:39.50] 6754; 6755; SLM-LABEL: test_invlpg_invlpga: 6756; SLM: # %bb.0: 6757; SLM-NEXT: #APP 6758; SLM-NEXT: invlpg (%rdi) # sched: [100:1.00] 6759; SLM-NEXT: invlpga %rax, %ecx # sched: [100:1.00] 6760; SLM-NEXT: #NO_APP 6761; SLM-NEXT: retq # sched: [4:1.00] 6762; 6763; SANDY-LABEL: test_invlpg_invlpga: 6764; SANDY: # %bb.0: 6765; SANDY-NEXT: #APP 6766; SANDY-NEXT: invlpg (%rdi) # sched: [100:0.33] 6767; SANDY-NEXT: invlpga %rax, %ecx # sched: [100:0.33] 6768; SANDY-NEXT: #NO_APP 6769; SANDY-NEXT: retq # sched: [1:1.00] 6770; 6771; HASWELL-LABEL: test_invlpg_invlpga: 6772; HASWELL: # %bb.0: 6773; HASWELL-NEXT: #APP 6774; HASWELL-NEXT: invlpg (%rdi) # sched: [100:0.25] 6775; HASWELL-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6776; HASWELL-NEXT: #NO_APP 6777; HASWELL-NEXT: retq # sched: [7:1.00] 6778; 6779; BROADWELL-LABEL: test_invlpg_invlpga: 6780; BROADWELL: # %bb.0: 6781; BROADWELL-NEXT: #APP 6782; BROADWELL-NEXT: invlpg (%rdi) # sched: [100:0.25] 6783; BROADWELL-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6784; BROADWELL-NEXT: #NO_APP 6785; BROADWELL-NEXT: retq # sched: [7:1.00] 6786; 6787; SKYLAKE-LABEL: test_invlpg_invlpga: 6788; SKYLAKE: # %bb.0: 6789; SKYLAKE-NEXT: #APP 6790; SKYLAKE-NEXT: invlpg (%rdi) # sched: [100:0.25] 6791; SKYLAKE-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6792; SKYLAKE-NEXT: #NO_APP 6793; SKYLAKE-NEXT: retq # sched: [7:1.00] 6794; 6795; SKX-LABEL: test_invlpg_invlpga: 6796; SKX: # %bb.0: 6797; SKX-NEXT: #APP 6798; SKX-NEXT: invlpg (%rdi) # sched: [100:0.25] 6799; SKX-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6800; SKX-NEXT: #NO_APP 6801; SKX-NEXT: retq # sched: [7:1.00] 6802; 6803; BTVER2-LABEL: test_invlpg_invlpga: 6804; BTVER2: # %bb.0: 6805; BTVER2-NEXT: #APP 6806; BTVER2-NEXT: invlpg (%rdi) # sched: [100:0.50] 6807; BTVER2-NEXT: invlpga %rax, %ecx # sched: [100:0.50] 6808; BTVER2-NEXT: #NO_APP 6809; BTVER2-NEXT: retq # sched: [4:1.00] 6810; 6811; ZNVER1-LABEL: test_invlpg_invlpga: 6812; ZNVER1: # %bb.0: 6813; ZNVER1-NEXT: #APP 6814; ZNVER1-NEXT: invlpg (%rdi) # sched: [100:0.25] 6815; ZNVER1-NEXT: invlpga %rax, %ecx # sched: [100:0.25] 6816; ZNVER1-NEXT: #NO_APP 6817; ZNVER1-NEXT: retq # sched: [1:0.50] 6818 tail call void asm sideeffect "invlpg $0 \0A\09 invlpga %rax, %ecx", "*m"(i8 *%a0) nounwind 6819 ret void 6820} 6821 6822define void @test_jcc() optsize { 6823; GENERIC-LABEL: test_jcc: 6824; GENERIC: # %bb.0: 6825; GENERIC-NEXT: #APP 6826; GENERIC-NEXT: JCCTGT: 6827; GENERIC-NEXT: jo JCCTGT # sched: [1:1.00] 6828; GENERIC-NEXT: jno JCCTGT # sched: [1:1.00] 6829; GENERIC-NEXT: jb JCCTGT # sched: [1:1.00] 6830; GENERIC-NEXT: jb JCCTGT # sched: [1:1.00] 6831; GENERIC-NEXT: jb JCCTGT # sched: [1:1.00] 6832; GENERIC-NEXT: jae JCCTGT # sched: [1:1.00] 6833; GENERIC-NEXT: jae JCCTGT # sched: [1:1.00] 6834; GENERIC-NEXT: jae JCCTGT # sched: [1:1.00] 6835; GENERIC-NEXT: je JCCTGT # sched: [1:1.00] 6836; GENERIC-NEXT: je JCCTGT # sched: [1:1.00] 6837; GENERIC-NEXT: jne JCCTGT # sched: [1:1.00] 6838; GENERIC-NEXT: jne JCCTGT # sched: [1:1.00] 6839; GENERIC-NEXT: jbe JCCTGT # sched: [1:1.00] 6840; GENERIC-NEXT: jbe JCCTGT # sched: [1:1.00] 6841; GENERIC-NEXT: ja JCCTGT # sched: [1:1.00] 6842; GENERIC-NEXT: ja JCCTGT # sched: [1:1.00] 6843; GENERIC-NEXT: js JCCTGT # sched: [1:1.00] 6844; GENERIC-NEXT: jns JCCTGT # sched: [1:1.00] 6845; GENERIC-NEXT: jp JCCTGT # sched: [1:1.00] 6846; GENERIC-NEXT: jp JCCTGT # sched: [1:1.00] 6847; GENERIC-NEXT: jnp JCCTGT # sched: [1:1.00] 6848; GENERIC-NEXT: jnp JCCTGT # sched: [1:1.00] 6849; GENERIC-NEXT: jl JCCTGT # sched: [1:1.00] 6850; GENERIC-NEXT: jl JCCTGT # sched: [1:1.00] 6851; GENERIC-NEXT: jge JCCTGT # sched: [1:1.00] 6852; GENERIC-NEXT: jge JCCTGT # sched: [1:1.00] 6853; GENERIC-NEXT: jle JCCTGT # sched: [1:1.00] 6854; GENERIC-NEXT: jle JCCTGT # sched: [1:1.00] 6855; GENERIC-NEXT: jg JCCTGT # sched: [1:1.00] 6856; GENERIC-NEXT: jg JCCTGT # sched: [1:1.00] 6857; GENERIC-NEXT: #NO_APP 6858; GENERIC-NEXT: retq # sched: [1:1.00] 6859; 6860; ATOM-LABEL: test_jcc: 6861; ATOM: # %bb.0: 6862; ATOM-NEXT: #APP 6863; ATOM-NEXT: JCCTGT: 6864; ATOM-NEXT: jo JCCTGT # sched: [1:1.00] 6865; ATOM-NEXT: jno JCCTGT # sched: [1:1.00] 6866; ATOM-NEXT: jb JCCTGT # sched: [1:1.00] 6867; ATOM-NEXT: jb JCCTGT # sched: [1:1.00] 6868; ATOM-NEXT: jb JCCTGT # sched: [1:1.00] 6869; ATOM-NEXT: jae JCCTGT # sched: [1:1.00] 6870; ATOM-NEXT: jae JCCTGT # sched: [1:1.00] 6871; ATOM-NEXT: jae JCCTGT # sched: [1:1.00] 6872; ATOM-NEXT: je JCCTGT # sched: [1:1.00] 6873; ATOM-NEXT: je JCCTGT # sched: [1:1.00] 6874; ATOM-NEXT: jne JCCTGT # sched: [1:1.00] 6875; ATOM-NEXT: jne JCCTGT # sched: [1:1.00] 6876; ATOM-NEXT: jbe JCCTGT # sched: [1:1.00] 6877; ATOM-NEXT: jbe JCCTGT # sched: [1:1.00] 6878; ATOM-NEXT: ja JCCTGT # sched: [1:1.00] 6879; ATOM-NEXT: ja JCCTGT # sched: [1:1.00] 6880; ATOM-NEXT: js JCCTGT # sched: [1:1.00] 6881; ATOM-NEXT: jns JCCTGT # sched: [1:1.00] 6882; ATOM-NEXT: jp JCCTGT # sched: [1:1.00] 6883; ATOM-NEXT: jp JCCTGT # sched: [1:1.00] 6884; ATOM-NEXT: jnp JCCTGT # sched: [1:1.00] 6885; ATOM-NEXT: jnp JCCTGT # sched: [1:1.00] 6886; ATOM-NEXT: jl JCCTGT # sched: [1:1.00] 6887; ATOM-NEXT: jl JCCTGT # sched: [1:1.00] 6888; ATOM-NEXT: jge JCCTGT # sched: [1:1.00] 6889; ATOM-NEXT: jge JCCTGT # sched: [1:1.00] 6890; ATOM-NEXT: jle JCCTGT # sched: [1:1.00] 6891; ATOM-NEXT: jle JCCTGT # sched: [1:1.00] 6892; ATOM-NEXT: jg JCCTGT # sched: [1:1.00] 6893; ATOM-NEXT: jg JCCTGT # sched: [1:1.00] 6894; ATOM-NEXT: #NO_APP 6895; ATOM-NEXT: retq # sched: [79:39.50] 6896; 6897; SLM-LABEL: test_jcc: 6898; SLM: # %bb.0: 6899; SLM-NEXT: #APP 6900; SLM-NEXT: JCCTGT: 6901; SLM-NEXT: jo JCCTGT # sched: [1:1.00] 6902; SLM-NEXT: jno JCCTGT # sched: [1:1.00] 6903; SLM-NEXT: jb JCCTGT # sched: [1:1.00] 6904; SLM-NEXT: jb JCCTGT # sched: [1:1.00] 6905; SLM-NEXT: jb JCCTGT # sched: [1:1.00] 6906; SLM-NEXT: jae JCCTGT # sched: [1:1.00] 6907; SLM-NEXT: jae JCCTGT # sched: [1:1.00] 6908; SLM-NEXT: jae JCCTGT # sched: [1:1.00] 6909; SLM-NEXT: je JCCTGT # sched: [1:1.00] 6910; SLM-NEXT: je JCCTGT # sched: [1:1.00] 6911; SLM-NEXT: jne JCCTGT # sched: [1:1.00] 6912; SLM-NEXT: jne JCCTGT # sched: [1:1.00] 6913; SLM-NEXT: jbe JCCTGT # sched: [1:1.00] 6914; SLM-NEXT: jbe JCCTGT # sched: [1:1.00] 6915; SLM-NEXT: ja JCCTGT # sched: [1:1.00] 6916; SLM-NEXT: ja JCCTGT # sched: [1:1.00] 6917; SLM-NEXT: js JCCTGT # sched: [1:1.00] 6918; SLM-NEXT: jns JCCTGT # sched: [1:1.00] 6919; SLM-NEXT: jp JCCTGT # sched: [1:1.00] 6920; SLM-NEXT: jp JCCTGT # sched: [1:1.00] 6921; SLM-NEXT: jnp JCCTGT # sched: [1:1.00] 6922; SLM-NEXT: jnp JCCTGT # sched: [1:1.00] 6923; SLM-NEXT: jl JCCTGT # sched: [1:1.00] 6924; SLM-NEXT: jl JCCTGT # sched: [1:1.00] 6925; SLM-NEXT: jge JCCTGT # sched: [1:1.00] 6926; SLM-NEXT: jge JCCTGT # sched: [1:1.00] 6927; SLM-NEXT: jle JCCTGT # sched: [1:1.00] 6928; SLM-NEXT: jle JCCTGT # sched: [1:1.00] 6929; SLM-NEXT: jg JCCTGT # sched: [1:1.00] 6930; SLM-NEXT: jg JCCTGT # sched: [1:1.00] 6931; SLM-NEXT: #NO_APP 6932; SLM-NEXT: retq # sched: [4:1.00] 6933; 6934; SANDY-LABEL: test_jcc: 6935; SANDY: # %bb.0: 6936; SANDY-NEXT: #APP 6937; SANDY-NEXT: JCCTGT: 6938; SANDY-NEXT: jo JCCTGT # sched: [1:1.00] 6939; SANDY-NEXT: jno JCCTGT # sched: [1:1.00] 6940; SANDY-NEXT: jb JCCTGT # sched: [1:1.00] 6941; SANDY-NEXT: jb JCCTGT # sched: [1:1.00] 6942; SANDY-NEXT: jb JCCTGT # sched: [1:1.00] 6943; SANDY-NEXT: jae JCCTGT # sched: [1:1.00] 6944; SANDY-NEXT: jae JCCTGT # sched: [1:1.00] 6945; SANDY-NEXT: jae JCCTGT # sched: [1:1.00] 6946; SANDY-NEXT: je JCCTGT # sched: [1:1.00] 6947; SANDY-NEXT: je JCCTGT # sched: [1:1.00] 6948; SANDY-NEXT: jne JCCTGT # sched: [1:1.00] 6949; SANDY-NEXT: jne JCCTGT # sched: [1:1.00] 6950; SANDY-NEXT: jbe JCCTGT # sched: [1:1.00] 6951; SANDY-NEXT: jbe JCCTGT # sched: [1:1.00] 6952; SANDY-NEXT: ja JCCTGT # sched: [1:1.00] 6953; SANDY-NEXT: ja JCCTGT # sched: [1:1.00] 6954; SANDY-NEXT: js JCCTGT # sched: [1:1.00] 6955; SANDY-NEXT: jns JCCTGT # sched: [1:1.00] 6956; SANDY-NEXT: jp JCCTGT # sched: [1:1.00] 6957; SANDY-NEXT: jp JCCTGT # sched: [1:1.00] 6958; SANDY-NEXT: jnp JCCTGT # sched: [1:1.00] 6959; SANDY-NEXT: jnp JCCTGT # sched: [1:1.00] 6960; SANDY-NEXT: jl JCCTGT # sched: [1:1.00] 6961; SANDY-NEXT: jl JCCTGT # sched: [1:1.00] 6962; SANDY-NEXT: jge JCCTGT # sched: [1:1.00] 6963; SANDY-NEXT: jge JCCTGT # sched: [1:1.00] 6964; SANDY-NEXT: jle JCCTGT # sched: [1:1.00] 6965; SANDY-NEXT: jle JCCTGT # sched: [1:1.00] 6966; SANDY-NEXT: jg JCCTGT # sched: [1:1.00] 6967; SANDY-NEXT: jg JCCTGT # sched: [1:1.00] 6968; SANDY-NEXT: #NO_APP 6969; SANDY-NEXT: retq # sched: [1:1.00] 6970; 6971; HASWELL-LABEL: test_jcc: 6972; HASWELL: # %bb.0: 6973; HASWELL-NEXT: #APP 6974; HASWELL-NEXT: JCCTGT: 6975; HASWELL-NEXT: jo JCCTGT # sched: [1:0.50] 6976; HASWELL-NEXT: jno JCCTGT # sched: [1:0.50] 6977; HASWELL-NEXT: jb JCCTGT # sched: [1:0.50] 6978; HASWELL-NEXT: jb JCCTGT # sched: [1:0.50] 6979; HASWELL-NEXT: jb JCCTGT # sched: [1:0.50] 6980; HASWELL-NEXT: jae JCCTGT # sched: [1:0.50] 6981; HASWELL-NEXT: jae JCCTGT # sched: [1:0.50] 6982; HASWELL-NEXT: jae JCCTGT # sched: [1:0.50] 6983; HASWELL-NEXT: je JCCTGT # sched: [1:0.50] 6984; HASWELL-NEXT: je JCCTGT # sched: [1:0.50] 6985; HASWELL-NEXT: jne JCCTGT # sched: [1:0.50] 6986; HASWELL-NEXT: jne JCCTGT # sched: [1:0.50] 6987; HASWELL-NEXT: jbe JCCTGT # sched: [1:0.50] 6988; HASWELL-NEXT: jbe JCCTGT # sched: [1:0.50] 6989; HASWELL-NEXT: ja JCCTGT # sched: [1:0.50] 6990; HASWELL-NEXT: ja JCCTGT # sched: [1:0.50] 6991; HASWELL-NEXT: js JCCTGT # sched: [1:0.50] 6992; HASWELL-NEXT: jns JCCTGT # sched: [1:0.50] 6993; HASWELL-NEXT: jp JCCTGT # sched: [1:0.50] 6994; HASWELL-NEXT: jp JCCTGT # sched: [1:0.50] 6995; HASWELL-NEXT: jnp JCCTGT # sched: [1:0.50] 6996; HASWELL-NEXT: jnp JCCTGT # sched: [1:0.50] 6997; HASWELL-NEXT: jl JCCTGT # sched: [1:0.50] 6998; HASWELL-NEXT: jl JCCTGT # sched: [1:0.50] 6999; HASWELL-NEXT: jge JCCTGT # sched: [1:0.50] 7000; HASWELL-NEXT: jge JCCTGT # sched: [1:0.50] 7001; HASWELL-NEXT: jle JCCTGT # sched: [1:0.50] 7002; HASWELL-NEXT: jle JCCTGT # sched: [1:0.50] 7003; HASWELL-NEXT: jg JCCTGT # sched: [1:0.50] 7004; HASWELL-NEXT: jg JCCTGT # sched: [1:0.50] 7005; HASWELL-NEXT: #NO_APP 7006; HASWELL-NEXT: retq # sched: [7:1.00] 7007; 7008; BROADWELL-LABEL: test_jcc: 7009; BROADWELL: # %bb.0: 7010; BROADWELL-NEXT: #APP 7011; BROADWELL-NEXT: JCCTGT: 7012; BROADWELL-NEXT: jo JCCTGT # sched: [1:0.50] 7013; BROADWELL-NEXT: jno JCCTGT # sched: [1:0.50] 7014; BROADWELL-NEXT: jb JCCTGT # sched: [1:0.50] 7015; BROADWELL-NEXT: jb JCCTGT # sched: [1:0.50] 7016; BROADWELL-NEXT: jb JCCTGT # sched: [1:0.50] 7017; BROADWELL-NEXT: jae JCCTGT # sched: [1:0.50] 7018; BROADWELL-NEXT: jae JCCTGT # sched: [1:0.50] 7019; BROADWELL-NEXT: jae JCCTGT # sched: [1:0.50] 7020; BROADWELL-NEXT: je JCCTGT # sched: [1:0.50] 7021; BROADWELL-NEXT: je JCCTGT # sched: [1:0.50] 7022; BROADWELL-NEXT: jne JCCTGT # sched: [1:0.50] 7023; BROADWELL-NEXT: jne JCCTGT # sched: [1:0.50] 7024; BROADWELL-NEXT: jbe JCCTGT # sched: [1:0.50] 7025; BROADWELL-NEXT: jbe JCCTGT # sched: [1:0.50] 7026; BROADWELL-NEXT: ja JCCTGT # sched: [1:0.50] 7027; BROADWELL-NEXT: ja JCCTGT # sched: [1:0.50] 7028; BROADWELL-NEXT: js JCCTGT # sched: [1:0.50] 7029; BROADWELL-NEXT: jns JCCTGT # sched: [1:0.50] 7030; BROADWELL-NEXT: jp JCCTGT # sched: [1:0.50] 7031; BROADWELL-NEXT: jp JCCTGT # sched: [1:0.50] 7032; BROADWELL-NEXT: jnp JCCTGT # sched: [1:0.50] 7033; BROADWELL-NEXT: jnp JCCTGT # sched: [1:0.50] 7034; BROADWELL-NEXT: jl JCCTGT # sched: [1:0.50] 7035; BROADWELL-NEXT: jl JCCTGT # sched: [1:0.50] 7036; BROADWELL-NEXT: jge JCCTGT # sched: [1:0.50] 7037; BROADWELL-NEXT: jge JCCTGT # sched: [1:0.50] 7038; BROADWELL-NEXT: jle JCCTGT # sched: [1:0.50] 7039; BROADWELL-NEXT: jle JCCTGT # sched: [1:0.50] 7040; BROADWELL-NEXT: jg JCCTGT # sched: [1:0.50] 7041; BROADWELL-NEXT: jg JCCTGT # sched: [1:0.50] 7042; BROADWELL-NEXT: #NO_APP 7043; BROADWELL-NEXT: retq # sched: [7:1.00] 7044; 7045; SKYLAKE-LABEL: test_jcc: 7046; SKYLAKE: # %bb.0: 7047; SKYLAKE-NEXT: #APP 7048; SKYLAKE-NEXT: JCCTGT: 7049; SKYLAKE-NEXT: jo JCCTGT # sched: [1:0.50] 7050; SKYLAKE-NEXT: jno JCCTGT # sched: [1:0.50] 7051; SKYLAKE-NEXT: jb JCCTGT # sched: [1:0.50] 7052; SKYLAKE-NEXT: jb JCCTGT # sched: [1:0.50] 7053; SKYLAKE-NEXT: jb JCCTGT # sched: [1:0.50] 7054; SKYLAKE-NEXT: jae JCCTGT # sched: [1:0.50] 7055; SKYLAKE-NEXT: jae JCCTGT # sched: [1:0.50] 7056; SKYLAKE-NEXT: jae JCCTGT # sched: [1:0.50] 7057; SKYLAKE-NEXT: je JCCTGT # sched: [1:0.50] 7058; SKYLAKE-NEXT: je JCCTGT # sched: [1:0.50] 7059; SKYLAKE-NEXT: jne JCCTGT # sched: [1:0.50] 7060; SKYLAKE-NEXT: jne JCCTGT # sched: [1:0.50] 7061; SKYLAKE-NEXT: jbe JCCTGT # sched: [1:0.50] 7062; SKYLAKE-NEXT: jbe JCCTGT # sched: [1:0.50] 7063; SKYLAKE-NEXT: ja JCCTGT # sched: [1:0.50] 7064; SKYLAKE-NEXT: ja JCCTGT # sched: [1:0.50] 7065; SKYLAKE-NEXT: js JCCTGT # sched: [1:0.50] 7066; SKYLAKE-NEXT: jns JCCTGT # sched: [1:0.50] 7067; SKYLAKE-NEXT: jp JCCTGT # sched: [1:0.50] 7068; SKYLAKE-NEXT: jp JCCTGT # sched: [1:0.50] 7069; SKYLAKE-NEXT: jnp JCCTGT # sched: [1:0.50] 7070; SKYLAKE-NEXT: jnp JCCTGT # sched: [1:0.50] 7071; SKYLAKE-NEXT: jl JCCTGT # sched: [1:0.50] 7072; SKYLAKE-NEXT: jl JCCTGT # sched: [1:0.50] 7073; SKYLAKE-NEXT: jge JCCTGT # sched: [1:0.50] 7074; SKYLAKE-NEXT: jge JCCTGT # sched: [1:0.50] 7075; SKYLAKE-NEXT: jle JCCTGT # sched: [1:0.50] 7076; SKYLAKE-NEXT: jle JCCTGT # sched: [1:0.50] 7077; SKYLAKE-NEXT: jg JCCTGT # sched: [1:0.50] 7078; SKYLAKE-NEXT: jg JCCTGT # sched: [1:0.50] 7079; SKYLAKE-NEXT: #NO_APP 7080; SKYLAKE-NEXT: retq # sched: [7:1.00] 7081; 7082; SKX-LABEL: test_jcc: 7083; SKX: # %bb.0: 7084; SKX-NEXT: #APP 7085; SKX-NEXT: JCCTGT: 7086; SKX-NEXT: jo JCCTGT # sched: [1:0.50] 7087; SKX-NEXT: jno JCCTGT # sched: [1:0.50] 7088; SKX-NEXT: jb JCCTGT # sched: [1:0.50] 7089; SKX-NEXT: jb JCCTGT # sched: [1:0.50] 7090; SKX-NEXT: jb JCCTGT # sched: [1:0.50] 7091; SKX-NEXT: jae JCCTGT # sched: [1:0.50] 7092; SKX-NEXT: jae JCCTGT # sched: [1:0.50] 7093; SKX-NEXT: jae JCCTGT # sched: [1:0.50] 7094; SKX-NEXT: je JCCTGT # sched: [1:0.50] 7095; SKX-NEXT: je JCCTGT # sched: [1:0.50] 7096; SKX-NEXT: jne JCCTGT # sched: [1:0.50] 7097; SKX-NEXT: jne JCCTGT # sched: [1:0.50] 7098; SKX-NEXT: jbe JCCTGT # sched: [1:0.50] 7099; SKX-NEXT: jbe JCCTGT # sched: [1:0.50] 7100; SKX-NEXT: ja JCCTGT # sched: [1:0.50] 7101; SKX-NEXT: ja JCCTGT # sched: [1:0.50] 7102; SKX-NEXT: js JCCTGT # sched: [1:0.50] 7103; SKX-NEXT: jns JCCTGT # sched: [1:0.50] 7104; SKX-NEXT: jp JCCTGT # sched: [1:0.50] 7105; SKX-NEXT: jp JCCTGT # sched: [1:0.50] 7106; SKX-NEXT: jnp JCCTGT # sched: [1:0.50] 7107; SKX-NEXT: jnp JCCTGT # sched: [1:0.50] 7108; SKX-NEXT: jl JCCTGT # sched: [1:0.50] 7109; SKX-NEXT: jl JCCTGT # sched: [1:0.50] 7110; SKX-NEXT: jge JCCTGT # sched: [1:0.50] 7111; SKX-NEXT: jge JCCTGT # sched: [1:0.50] 7112; SKX-NEXT: jle JCCTGT # sched: [1:0.50] 7113; SKX-NEXT: jle JCCTGT # sched: [1:0.50] 7114; SKX-NEXT: jg JCCTGT # sched: [1:0.50] 7115; SKX-NEXT: jg JCCTGT # sched: [1:0.50] 7116; SKX-NEXT: #NO_APP 7117; SKX-NEXT: retq # sched: [7:1.00] 7118; 7119; BTVER2-LABEL: test_jcc: 7120; BTVER2: # %bb.0: 7121; BTVER2-NEXT: #APP 7122; BTVER2-NEXT: JCCTGT: 7123; BTVER2-NEXT: jo JCCTGT # sched: [1:0.50] 7124; BTVER2-NEXT: jno JCCTGT # sched: [1:0.50] 7125; BTVER2-NEXT: jb JCCTGT # sched: [1:0.50] 7126; BTVER2-NEXT: jb JCCTGT # sched: [1:0.50] 7127; BTVER2-NEXT: jb JCCTGT # sched: [1:0.50] 7128; BTVER2-NEXT: jae JCCTGT # sched: [1:0.50] 7129; BTVER2-NEXT: jae JCCTGT # sched: [1:0.50] 7130; BTVER2-NEXT: jae JCCTGT # sched: [1:0.50] 7131; BTVER2-NEXT: je JCCTGT # sched: [1:0.50] 7132; BTVER2-NEXT: je JCCTGT # sched: [1:0.50] 7133; BTVER2-NEXT: jne JCCTGT # sched: [1:0.50] 7134; BTVER2-NEXT: jne JCCTGT # sched: [1:0.50] 7135; BTVER2-NEXT: jbe JCCTGT # sched: [1:0.50] 7136; BTVER2-NEXT: jbe JCCTGT # sched: [1:0.50] 7137; BTVER2-NEXT: ja JCCTGT # sched: [1:0.50] 7138; BTVER2-NEXT: ja JCCTGT # sched: [1:0.50] 7139; BTVER2-NEXT: js JCCTGT # sched: [1:0.50] 7140; BTVER2-NEXT: jns JCCTGT # sched: [1:0.50] 7141; BTVER2-NEXT: jp JCCTGT # sched: [1:0.50] 7142; BTVER2-NEXT: jp JCCTGT # sched: [1:0.50] 7143; BTVER2-NEXT: jnp JCCTGT # sched: [1:0.50] 7144; BTVER2-NEXT: jnp JCCTGT # sched: [1:0.50] 7145; BTVER2-NEXT: jl JCCTGT # sched: [1:0.50] 7146; BTVER2-NEXT: jl JCCTGT # sched: [1:0.50] 7147; BTVER2-NEXT: jge JCCTGT # sched: [1:0.50] 7148; BTVER2-NEXT: jge JCCTGT # sched: [1:0.50] 7149; BTVER2-NEXT: jle JCCTGT # sched: [1:0.50] 7150; BTVER2-NEXT: jle JCCTGT # sched: [1:0.50] 7151; BTVER2-NEXT: jg JCCTGT # sched: [1:0.50] 7152; BTVER2-NEXT: jg JCCTGT # sched: [1:0.50] 7153; BTVER2-NEXT: #NO_APP 7154; BTVER2-NEXT: retq # sched: [4:1.00] 7155; 7156; ZNVER1-LABEL: test_jcc: 7157; ZNVER1: # %bb.0: 7158; ZNVER1-NEXT: #APP 7159; ZNVER1-NEXT: JCCTGT: 7160; ZNVER1-NEXT: jo JCCTGT # sched: [1:0.25] 7161; ZNVER1-NEXT: jno JCCTGT # sched: [1:0.25] 7162; ZNVER1-NEXT: jb JCCTGT # sched: [1:0.25] 7163; ZNVER1-NEXT: jb JCCTGT # sched: [1:0.25] 7164; ZNVER1-NEXT: jb JCCTGT # sched: [1:0.25] 7165; ZNVER1-NEXT: jae JCCTGT # sched: [1:0.25] 7166; ZNVER1-NEXT: jae JCCTGT # sched: [1:0.25] 7167; ZNVER1-NEXT: jae JCCTGT # sched: [1:0.25] 7168; ZNVER1-NEXT: je JCCTGT # sched: [1:0.25] 7169; ZNVER1-NEXT: je JCCTGT # sched: [1:0.25] 7170; ZNVER1-NEXT: jne JCCTGT # sched: [1:0.25] 7171; ZNVER1-NEXT: jne JCCTGT # sched: [1:0.25] 7172; ZNVER1-NEXT: jbe JCCTGT # sched: [1:0.25] 7173; ZNVER1-NEXT: jbe JCCTGT # sched: [1:0.25] 7174; ZNVER1-NEXT: ja JCCTGT # sched: [1:0.25] 7175; ZNVER1-NEXT: ja JCCTGT # sched: [1:0.25] 7176; ZNVER1-NEXT: js JCCTGT # sched: [1:0.25] 7177; ZNVER1-NEXT: jns JCCTGT # sched: [1:0.25] 7178; ZNVER1-NEXT: jp JCCTGT # sched: [1:0.25] 7179; ZNVER1-NEXT: jp JCCTGT # sched: [1:0.25] 7180; ZNVER1-NEXT: jnp JCCTGT # sched: [1:0.25] 7181; ZNVER1-NEXT: jnp JCCTGT # sched: [1:0.25] 7182; ZNVER1-NEXT: jl JCCTGT # sched: [1:0.25] 7183; ZNVER1-NEXT: jl JCCTGT # sched: [1:0.25] 7184; ZNVER1-NEXT: jge JCCTGT # sched: [1:0.25] 7185; ZNVER1-NEXT: jge JCCTGT # sched: [1:0.25] 7186; ZNVER1-NEXT: jle JCCTGT # sched: [1:0.25] 7187; ZNVER1-NEXT: jle JCCTGT # sched: [1:0.25] 7188; ZNVER1-NEXT: jg JCCTGT # sched: [1:0.25] 7189; ZNVER1-NEXT: jg JCCTGT # sched: [1:0.25] 7190; ZNVER1-NEXT: #NO_APP 7191; ZNVER1-NEXT: retq # sched: [1:0.50] 7192 call void asm sideeffect "JCCTGT: \0A\09 jo JCCTGT \0A\09 jno JCCTGT \0A\09 jb JCCTGT \0A\09 jc JCCTGT \0A\09 jnae JCCTGT \0A\09 jnb JCCTGT \0A\09 jnc JCCTGT \0A\09 jae JCCTGT \0A\09 jz JCCTGT \0A\09 je JCCTGT \0A\09 jnz JCCTGT \0A\09 jne JCCTGT \0A\09 jbe JCCTGT \0A\09 jna JCCTGT \0A\09 jnbe JCCTGT \0A\09 ja JCCTGT \0A\09 js JCCTGT \0A\09 jns JCCTGT \0A\09 jp JCCTGT \0A\09 jpe JCCTGT \0A\09 jnp JCCTGT \0A\09 jpo JCCTGT \0A\09 jl JCCTGT \0A\09 jnge JCCTGT \0A\09 jnl JCCTGT \0A\09 jge JCCTGT \0A\09 jle JCCTGT \0A\09 jng JCCTGT \0A\09 jnle JCCTGT \0A\09 jg JCCTGT", ""() 7193 ret void 7194} 7195 7196define void @test_jecxz_jrcxz() optsize { 7197; GENERIC-LABEL: test_jecxz_jrcxz: 7198; GENERIC: # %bb.0: 7199; GENERIC-NEXT: #APP 7200; GENERIC-NEXT: JXTGT: 7201; GENERIC-NEXT: jecxz JXTGT # sched: [2:1.00] 7202; GENERIC-NEXT: jrcxz JXTGT # sched: [2:1.00] 7203; GENERIC-NEXT: #NO_APP 7204; GENERIC-NEXT: retq # sched: [1:1.00] 7205; 7206; ATOM-LABEL: test_jecxz_jrcxz: 7207; ATOM: # %bb.0: 7208; ATOM-NEXT: #APP 7209; ATOM-NEXT: JXTGT: 7210; ATOM-NEXT: jecxz JXTGT # sched: [4:2.00] 7211; ATOM-NEXT: jrcxz JXTGT # sched: [4:2.00] 7212; ATOM-NEXT: #NO_APP 7213; ATOM-NEXT: retq # sched: [79:39.50] 7214; 7215; SLM-LABEL: test_jecxz_jrcxz: 7216; SLM: # %bb.0: 7217; SLM-NEXT: #APP 7218; SLM-NEXT: JXTGT: 7219; SLM-NEXT: jecxz JXTGT # sched: [1:1.00] 7220; SLM-NEXT: jrcxz JXTGT # sched: [1:1.00] 7221; SLM-NEXT: #NO_APP 7222; SLM-NEXT: retq # sched: [4:1.00] 7223; 7224; SANDY-LABEL: test_jecxz_jrcxz: 7225; SANDY: # %bb.0: 7226; SANDY-NEXT: #APP 7227; SANDY-NEXT: JXTGT: 7228; SANDY-NEXT: jecxz JXTGT # sched: [2:1.00] 7229; SANDY-NEXT: jrcxz JXTGT # sched: [2:1.00] 7230; SANDY-NEXT: #NO_APP 7231; SANDY-NEXT: retq # sched: [1:1.00] 7232; 7233; HASWELL-LABEL: test_jecxz_jrcxz: 7234; HASWELL: # %bb.0: 7235; HASWELL-NEXT: #APP 7236; HASWELL-NEXT: JXTGT: 7237; HASWELL-NEXT: jecxz JXTGT # sched: [2:0.50] 7238; HASWELL-NEXT: jrcxz JXTGT # sched: [2:0.50] 7239; HASWELL-NEXT: #NO_APP 7240; HASWELL-NEXT: retq # sched: [7:1.00] 7241; 7242; BROADWELL-LABEL: test_jecxz_jrcxz: 7243; BROADWELL: # %bb.0: 7244; BROADWELL-NEXT: #APP 7245; BROADWELL-NEXT: JXTGT: 7246; BROADWELL-NEXT: jecxz JXTGT # sched: [2:0.50] 7247; BROADWELL-NEXT: jrcxz JXTGT # sched: [2:0.50] 7248; BROADWELL-NEXT: #NO_APP 7249; BROADWELL-NEXT: retq # sched: [7:1.00] 7250; 7251; SKYLAKE-LABEL: test_jecxz_jrcxz: 7252; SKYLAKE: # %bb.0: 7253; SKYLAKE-NEXT: #APP 7254; SKYLAKE-NEXT: JXTGT: 7255; SKYLAKE-NEXT: jecxz JXTGT # sched: [2:0.50] 7256; SKYLAKE-NEXT: jrcxz JXTGT # sched: [2:0.50] 7257; SKYLAKE-NEXT: #NO_APP 7258; SKYLAKE-NEXT: retq # sched: [7:1.00] 7259; 7260; SKX-LABEL: test_jecxz_jrcxz: 7261; SKX: # %bb.0: 7262; SKX-NEXT: #APP 7263; SKX-NEXT: JXTGT: 7264; SKX-NEXT: jecxz JXTGT # sched: [2:0.50] 7265; SKX-NEXT: jrcxz JXTGT # sched: [2:0.50] 7266; SKX-NEXT: #NO_APP 7267; SKX-NEXT: retq # sched: [7:1.00] 7268; 7269; BTVER2-LABEL: test_jecxz_jrcxz: 7270; BTVER2: # %bb.0: 7271; BTVER2-NEXT: #APP 7272; BTVER2-NEXT: JXTGT: 7273; BTVER2-NEXT: jecxz JXTGT # sched: [1:0.50] 7274; BTVER2-NEXT: jrcxz JXTGT # sched: [1:0.50] 7275; BTVER2-NEXT: #NO_APP 7276; BTVER2-NEXT: retq # sched: [4:1.00] 7277; 7278; ZNVER1-LABEL: test_jecxz_jrcxz: 7279; ZNVER1: # %bb.0: 7280; ZNVER1-NEXT: #APP 7281; ZNVER1-NEXT: JXTGT: 7282; ZNVER1-NEXT: jecxz JXTGT # sched: [1:0.50] 7283; ZNVER1-NEXT: jrcxz JXTGT # sched: [1:0.50] 7284; ZNVER1-NEXT: #NO_APP 7285; ZNVER1-NEXT: retq # sched: [1:0.50] 7286 call void asm sideeffect "JXTGT: \0A\09 jecxz JXTGT \0A\09 jrcxz JXTGT", ""() 7287 ret void 7288} 7289 7290; TODO - test_jmp 7291 7292define void @test_lahf_sahf() optsize { 7293; GENERIC-LABEL: test_lahf_sahf: 7294; GENERIC: # %bb.0: 7295; GENERIC-NEXT: #APP 7296; GENERIC-NEXT: lahf # sched: [1:0.50] 7297; GENERIC-NEXT: sahf # sched: [1:0.50] 7298; GENERIC-NEXT: #NO_APP 7299; GENERIC-NEXT: retq # sched: [1:1.00] 7300; 7301; ATOM-LABEL: test_lahf_sahf: 7302; ATOM: # %bb.0: 7303; ATOM-NEXT: #APP 7304; ATOM-NEXT: lahf # sched: [2:1.00] 7305; ATOM-NEXT: sahf # sched: [2:1.00] 7306; ATOM-NEXT: #NO_APP 7307; ATOM-NEXT: retq # sched: [79:39.50] 7308; 7309; SLM-LABEL: test_lahf_sahf: 7310; SLM: # %bb.0: 7311; SLM-NEXT: #APP 7312; SLM-NEXT: lahf # sched: [1:0.50] 7313; SLM-NEXT: sahf # sched: [1:0.50] 7314; SLM-NEXT: #NO_APP 7315; SLM-NEXT: retq # sched: [4:1.00] 7316; 7317; SANDY-LABEL: test_lahf_sahf: 7318; SANDY: # %bb.0: 7319; SANDY-NEXT: #APP 7320; SANDY-NEXT: lahf # sched: [1:0.50] 7321; SANDY-NEXT: sahf # sched: [1:0.50] 7322; SANDY-NEXT: #NO_APP 7323; SANDY-NEXT: retq # sched: [1:1.00] 7324; 7325; HASWELL-LABEL: test_lahf_sahf: 7326; HASWELL: # %bb.0: 7327; HASWELL-NEXT: #APP 7328; HASWELL-NEXT: lahf # sched: [1:0.50] 7329; HASWELL-NEXT: sahf # sched: [1:0.50] 7330; HASWELL-NEXT: #NO_APP 7331; HASWELL-NEXT: retq # sched: [7:1.00] 7332; 7333; BROADWELL-LABEL: test_lahf_sahf: 7334; BROADWELL: # %bb.0: 7335; BROADWELL-NEXT: #APP 7336; BROADWELL-NEXT: lahf # sched: [1:0.50] 7337; BROADWELL-NEXT: sahf # sched: [1:0.50] 7338; BROADWELL-NEXT: #NO_APP 7339; BROADWELL-NEXT: retq # sched: [7:1.00] 7340; 7341; SKYLAKE-LABEL: test_lahf_sahf: 7342; SKYLAKE: # %bb.0: 7343; SKYLAKE-NEXT: #APP 7344; SKYLAKE-NEXT: lahf # sched: [1:0.50] 7345; SKYLAKE-NEXT: sahf # sched: [1:0.50] 7346; SKYLAKE-NEXT: #NO_APP 7347; SKYLAKE-NEXT: retq # sched: [7:1.00] 7348; 7349; SKX-LABEL: test_lahf_sahf: 7350; SKX: # %bb.0: 7351; SKX-NEXT: #APP 7352; SKX-NEXT: lahf # sched: [1:0.50] 7353; SKX-NEXT: sahf # sched: [1:0.50] 7354; SKX-NEXT: #NO_APP 7355; SKX-NEXT: retq # sched: [7:1.00] 7356; 7357; BTVER2-LABEL: test_lahf_sahf: 7358; BTVER2: # %bb.0: 7359; BTVER2-NEXT: #APP 7360; BTVER2-NEXT: lahf # sched: [1:0.50] 7361; BTVER2-NEXT: sahf # sched: [1:0.50] 7362; BTVER2-NEXT: #NO_APP 7363; BTVER2-NEXT: retq # sched: [4:1.00] 7364; 7365; ZNVER1-LABEL: test_lahf_sahf: 7366; ZNVER1: # %bb.0: 7367; ZNVER1-NEXT: #APP 7368; ZNVER1-NEXT: lahf # sched: [100:0.25] 7369; ZNVER1-NEXT: sahf # sched: [2:0.25] 7370; ZNVER1-NEXT: #NO_APP 7371; ZNVER1-NEXT: retq # sched: [1:0.50] 7372 tail call void asm "lahf \0A\09 sahf", ""() nounwind 7373 ret void 7374} 7375 7376; TODO - test_lds 7377; TODO - test_les 7378; TODO - test_lfs 7379; TODO - test_lgs 7380; TODO - test_lss 7381 7382; TODO - test_lea 7383 7384define void @test_leave() optsize { 7385; GENERIC-LABEL: test_leave: 7386; GENERIC: # %bb.0: 7387; GENERIC-NEXT: #APP 7388; GENERIC-NEXT: leave # sched: [7:0.67] 7389; GENERIC-NEXT: #NO_APP 7390; GENERIC-NEXT: retq # sched: [1:1.00] 7391; 7392; ATOM-LABEL: test_leave: 7393; ATOM: # %bb.0: 7394; ATOM-NEXT: #APP 7395; ATOM-NEXT: leave # sched: [2:1.00] 7396; ATOM-NEXT: #NO_APP 7397; ATOM-NEXT: retq # sched: [79:39.50] 7398; 7399; SLM-LABEL: test_leave: 7400; SLM: # %bb.0: 7401; SLM-NEXT: #APP 7402; SLM-NEXT: leave # sched: [1:0.50] 7403; SLM-NEXT: #NO_APP 7404; SLM-NEXT: retq # sched: [4:1.00] 7405; 7406; SANDY-LABEL: test_leave: 7407; SANDY: # %bb.0: 7408; SANDY-NEXT: #APP 7409; SANDY-NEXT: leave # sched: [7:0.67] 7410; SANDY-NEXT: #NO_APP 7411; SANDY-NEXT: retq # sched: [1:1.00] 7412; 7413; HASWELL-LABEL: test_leave: 7414; HASWELL: # %bb.0: 7415; HASWELL-NEXT: #APP 7416; HASWELL-NEXT: leave # sched: [7:0.50] 7417; HASWELL-NEXT: #NO_APP 7418; HASWELL-NEXT: retq # sched: [7:1.00] 7419; 7420; BROADWELL-LABEL: test_leave: 7421; BROADWELL: # %bb.0: 7422; BROADWELL-NEXT: #APP 7423; BROADWELL-NEXT: leave # sched: [7:0.50] 7424; BROADWELL-NEXT: #NO_APP 7425; BROADWELL-NEXT: retq # sched: [7:1.00] 7426; 7427; SKYLAKE-LABEL: test_leave: 7428; SKYLAKE: # %bb.0: 7429; SKYLAKE-NEXT: #APP 7430; SKYLAKE-NEXT: leave # sched: [7:0.50] 7431; SKYLAKE-NEXT: #NO_APP 7432; SKYLAKE-NEXT: retq # sched: [7:1.00] 7433; 7434; SKX-LABEL: test_leave: 7435; SKX: # %bb.0: 7436; SKX-NEXT: #APP 7437; SKX-NEXT: leave # sched: [7:0.50] 7438; SKX-NEXT: #NO_APP 7439; SKX-NEXT: retq # sched: [7:1.00] 7440; 7441; BTVER2-LABEL: test_leave: 7442; BTVER2: # %bb.0: 7443; BTVER2-NEXT: #APP 7444; BTVER2-NEXT: leave # sched: [1:0.50] 7445; BTVER2-NEXT: #NO_APP 7446; BTVER2-NEXT: retq # sched: [4:1.00] 7447; 7448; ZNVER1-LABEL: test_leave: 7449; ZNVER1: # %bb.0: 7450; ZNVER1-NEXT: #APP 7451; ZNVER1-NEXT: leave # sched: [8:0.50] 7452; ZNVER1-NEXT: #NO_APP 7453; ZNVER1-NEXT: retq # sched: [1:0.50] 7454 tail call void asm "leave", ""() nounwind 7455 ret void 7456} 7457 7458define void @test_lods() optsize { 7459; GENERIC-LABEL: test_lods: 7460; GENERIC: # %bb.0: 7461; GENERIC-NEXT: #APP 7462; GENERIC-NEXT: lodsb (%rsi), %al # sched: [7:0.67] 7463; GENERIC-NEXT: lodsw (%rsi), %ax # sched: [7:0.67] 7464; GENERIC-NEXT: lodsl (%rsi), %eax # sched: [6:0.50] 7465; GENERIC-NEXT: lodsq (%rsi), %rax # sched: [6:0.50] 7466; GENERIC-NEXT: #NO_APP 7467; GENERIC-NEXT: retq # sched: [1:1.00] 7468; 7469; ATOM-LABEL: test_lods: 7470; ATOM: # %bb.0: 7471; ATOM-NEXT: #APP 7472; ATOM-NEXT: lodsb (%rsi), %al # sched: [2:1.00] 7473; ATOM-NEXT: lodsw (%rsi), %ax # sched: [2:1.00] 7474; ATOM-NEXT: lodsl (%rsi), %eax # sched: [2:1.00] 7475; ATOM-NEXT: lodsq (%rsi), %rax # sched: [2:1.00] 7476; ATOM-NEXT: #NO_APP 7477; ATOM-NEXT: retq # sched: [79:39.50] 7478; 7479; SLM-LABEL: test_lods: 7480; SLM: # %bb.0: 7481; SLM-NEXT: #APP 7482; SLM-NEXT: lodsb (%rsi), %al # sched: [100:1.00] 7483; SLM-NEXT: lodsw (%rsi), %ax # sched: [100:1.00] 7484; SLM-NEXT: lodsl (%rsi), %eax # sched: [100:1.00] 7485; SLM-NEXT: lodsq (%rsi), %rax # sched: [100:1.00] 7486; SLM-NEXT: #NO_APP 7487; SLM-NEXT: retq # sched: [4:1.00] 7488; 7489; SANDY-LABEL: test_lods: 7490; SANDY: # %bb.0: 7491; SANDY-NEXT: #APP 7492; SANDY-NEXT: lodsb (%rsi), %al # sched: [7:0.67] 7493; SANDY-NEXT: lodsw (%rsi), %ax # sched: [7:0.67] 7494; SANDY-NEXT: lodsl (%rsi), %eax # sched: [6:0.50] 7495; SANDY-NEXT: lodsq (%rsi), %rax # sched: [6:0.50] 7496; SANDY-NEXT: #NO_APP 7497; SANDY-NEXT: retq # sched: [1:1.00] 7498; 7499; HASWELL-LABEL: test_lods: 7500; HASWELL: # %bb.0: 7501; HASWELL-NEXT: #APP 7502; HASWELL-NEXT: lodsb (%rsi), %al # sched: [1:0.50] 7503; HASWELL-NEXT: lodsw (%rsi), %ax # sched: [1:0.50] 7504; HASWELL-NEXT: lodsl (%rsi), %eax # sched: [1:0.50] 7505; HASWELL-NEXT: lodsq (%rsi), %rax # sched: [1:0.50] 7506; HASWELL-NEXT: #NO_APP 7507; HASWELL-NEXT: retq # sched: [7:1.00] 7508; 7509; BROADWELL-LABEL: test_lods: 7510; BROADWELL: # %bb.0: 7511; BROADWELL-NEXT: #APP 7512; BROADWELL-NEXT: lodsb (%rsi), %al # sched: [100:0.25] 7513; BROADWELL-NEXT: lodsw (%rsi), %ax # sched: [100:0.25] 7514; BROADWELL-NEXT: lodsl (%rsi), %eax # sched: [100:0.25] 7515; BROADWELL-NEXT: lodsq (%rsi), %rax # sched: [100:0.25] 7516; BROADWELL-NEXT: #NO_APP 7517; BROADWELL-NEXT: retq # sched: [7:1.00] 7518; 7519; SKYLAKE-LABEL: test_lods: 7520; SKYLAKE: # %bb.0: 7521; SKYLAKE-NEXT: #APP 7522; SKYLAKE-NEXT: lodsb (%rsi), %al # sched: [100:0.25] 7523; SKYLAKE-NEXT: lodsw (%rsi), %ax # sched: [100:0.25] 7524; SKYLAKE-NEXT: lodsl (%rsi), %eax # sched: [100:0.25] 7525; SKYLAKE-NEXT: lodsq (%rsi), %rax # sched: [100:0.25] 7526; SKYLAKE-NEXT: #NO_APP 7527; SKYLAKE-NEXT: retq # sched: [7:1.00] 7528; 7529; SKX-LABEL: test_lods: 7530; SKX: # %bb.0: 7531; SKX-NEXT: #APP 7532; SKX-NEXT: lodsb (%rsi), %al # sched: [100:0.25] 7533; SKX-NEXT: lodsw (%rsi), %ax # sched: [100:0.25] 7534; SKX-NEXT: lodsl (%rsi), %eax # sched: [100:0.25] 7535; SKX-NEXT: lodsq (%rsi), %rax # sched: [100:0.25] 7536; SKX-NEXT: #NO_APP 7537; SKX-NEXT: retq # sched: [7:1.00] 7538; 7539; BTVER2-LABEL: test_lods: 7540; BTVER2: # %bb.0: 7541; BTVER2-NEXT: #APP 7542; BTVER2-NEXT: lodsb (%rsi), %al # sched: [100:0.50] 7543; BTVER2-NEXT: lodsw (%rsi), %ax # sched: [100:0.50] 7544; BTVER2-NEXT: lodsl (%rsi), %eax # sched: [100:0.50] 7545; BTVER2-NEXT: lodsq (%rsi), %rax # sched: [100:0.50] 7546; BTVER2-NEXT: #NO_APP 7547; BTVER2-NEXT: retq # sched: [4:1.00] 7548; 7549; ZNVER1-LABEL: test_lods: 7550; ZNVER1: # %bb.0: 7551; ZNVER1-NEXT: #APP 7552; ZNVER1-NEXT: lodsb (%rsi), %al # sched: [100:0.25] 7553; ZNVER1-NEXT: lodsw (%rsi), %ax # sched: [100:0.25] 7554; ZNVER1-NEXT: lodsl (%rsi), %eax # sched: [100:0.25] 7555; ZNVER1-NEXT: lodsq (%rsi), %rax # sched: [100:0.25] 7556; ZNVER1-NEXT: #NO_APP 7557; ZNVER1-NEXT: retq # sched: [1:0.50] 7558 call void asm sideeffect "lodsb \0A\09 lodsw \0A\09 lodsl \0A\09 lodsq", ""() 7559 ret void 7560} 7561 7562define void @test_loop() optsize { 7563; GENERIC-LABEL: test_loop: 7564; GENERIC: # %bb.0: 7565; GENERIC-NEXT: #APP 7566; GENERIC-NEXT: LTGT: 7567; GENERIC-NEXT: loop LTGT # sched: [1:1.00] 7568; GENERIC-NEXT: loope LTGT # sched: [1:1.00] 7569; GENERIC-NEXT: loopne LTGT # sched: [1:1.00] 7570; GENERIC-NEXT: #NO_APP 7571; GENERIC-NEXT: retq # sched: [1:1.00] 7572; 7573; ATOM-LABEL: test_loop: 7574; ATOM: # %bb.0: 7575; ATOM-NEXT: #APP 7576; ATOM-NEXT: LTGT: 7577; ATOM-NEXT: loop LTGT # sched: [18:9.00] 7578; ATOM-NEXT: loope LTGT # sched: [8:4.00] 7579; ATOM-NEXT: loopne LTGT # sched: [17:8.50] 7580; ATOM-NEXT: #NO_APP 7581; ATOM-NEXT: retq # sched: [79:39.50] 7582; 7583; SLM-LABEL: test_loop: 7584; SLM: # %bb.0: 7585; SLM-NEXT: #APP 7586; SLM-NEXT: LTGT: 7587; SLM-NEXT: loop LTGT # sched: [1:1.00] 7588; SLM-NEXT: loope LTGT # sched: [1:1.00] 7589; SLM-NEXT: loopne LTGT # sched: [1:1.00] 7590; SLM-NEXT: #NO_APP 7591; SLM-NEXT: retq # sched: [4:1.00] 7592; 7593; SANDY-LABEL: test_loop: 7594; SANDY: # %bb.0: 7595; SANDY-NEXT: #APP 7596; SANDY-NEXT: LTGT: 7597; SANDY-NEXT: loop LTGT # sched: [1:1.00] 7598; SANDY-NEXT: loope LTGT # sched: [1:1.00] 7599; SANDY-NEXT: loopne LTGT # sched: [1:1.00] 7600; SANDY-NEXT: #NO_APP 7601; SANDY-NEXT: retq # sched: [1:1.00] 7602; 7603; HASWELL-LABEL: test_loop: 7604; HASWELL: # %bb.0: 7605; HASWELL-NEXT: #APP 7606; HASWELL-NEXT: LTGT: 7607; HASWELL-NEXT: loop LTGT # sched: [7:2.00] 7608; HASWELL-NEXT: loope LTGT # sched: [11:2.75] 7609; HASWELL-NEXT: loopne LTGT # sched: [11:2.75] 7610; HASWELL-NEXT: #NO_APP 7611; HASWELL-NEXT: retq # sched: [7:1.00] 7612; 7613; BROADWELL-LABEL: test_loop: 7614; BROADWELL: # %bb.0: 7615; BROADWELL-NEXT: #APP 7616; BROADWELL-NEXT: LTGT: 7617; BROADWELL-NEXT: loop LTGT # sched: [7:2.00] 7618; BROADWELL-NEXT: loope LTGT # sched: [11:2.75] 7619; BROADWELL-NEXT: loopne LTGT # sched: [11:2.75] 7620; BROADWELL-NEXT: #NO_APP 7621; BROADWELL-NEXT: retq # sched: [7:1.00] 7622; 7623; SKYLAKE-LABEL: test_loop: 7624; SKYLAKE: # %bb.0: 7625; SKYLAKE-NEXT: #APP 7626; SKYLAKE-NEXT: LTGT: 7627; SKYLAKE-NEXT: loop LTGT # sched: [7:2.00] 7628; SKYLAKE-NEXT: loope LTGT # sched: [11:2.75] 7629; SKYLAKE-NEXT: loopne LTGT # sched: [11:2.75] 7630; SKYLAKE-NEXT: #NO_APP 7631; SKYLAKE-NEXT: retq # sched: [7:1.00] 7632; 7633; SKX-LABEL: test_loop: 7634; SKX: # %bb.0: 7635; SKX-NEXT: #APP 7636; SKX-NEXT: LTGT: 7637; SKX-NEXT: loop LTGT # sched: [7:2.00] 7638; SKX-NEXT: loope LTGT # sched: [11:2.75] 7639; SKX-NEXT: loopne LTGT # sched: [11:2.75] 7640; SKX-NEXT: #NO_APP 7641; SKX-NEXT: retq # sched: [7:1.00] 7642; 7643; BTVER2-LABEL: test_loop: 7644; BTVER2: # %bb.0: 7645; BTVER2-NEXT: #APP 7646; BTVER2-NEXT: LTGT: 7647; BTVER2-NEXT: loop LTGT # sched: [1:0.50] 7648; BTVER2-NEXT: loope LTGT # sched: [1:0.50] 7649; BTVER2-NEXT: loopne LTGT # sched: [1:0.50] 7650; BTVER2-NEXT: #NO_APP 7651; BTVER2-NEXT: retq # sched: [4:1.00] 7652; 7653; ZNVER1-LABEL: test_loop: 7654; ZNVER1: # %bb.0: 7655; ZNVER1-NEXT: #APP 7656; ZNVER1-NEXT: LTGT: 7657; ZNVER1-NEXT: loop LTGT # sched: [1:0.50] 7658; ZNVER1-NEXT: loope LTGT # sched: [1:0.50] 7659; ZNVER1-NEXT: loopne LTGT # sched: [1:0.50] 7660; ZNVER1-NEXT: #NO_APP 7661; ZNVER1-NEXT: retq # sched: [1:0.50] 7662 call void asm sideeffect "LTGT: \0A\09 loop LTGT \0A\09 loope LTGT \0A\09 loopne LTGT", ""() 7663 ret void 7664} 7665 7666; TODO - test_mov 7667 7668define void @test_movnti(i32 %a0, i32 *%a1, i64 %a2, i64 *%a3) optsize { 7669; GENERIC-LABEL: test_movnti: 7670; GENERIC: # %bb.0: 7671; GENERIC-NEXT: #APP 7672; GENERIC-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7673; GENERIC-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7674; GENERIC-NEXT: #NO_APP 7675; GENERIC-NEXT: retq # sched: [1:1.00] 7676; 7677; ATOM-LABEL: test_movnti: 7678; ATOM: # %bb.0: 7679; ATOM-NEXT: #APP 7680; ATOM-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7681; ATOM-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7682; ATOM-NEXT: #NO_APP 7683; ATOM-NEXT: retq # sched: [79:39.50] 7684; 7685; SLM-LABEL: test_movnti: 7686; SLM: # %bb.0: 7687; SLM-NEXT: #APP 7688; SLM-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7689; SLM-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7690; SLM-NEXT: #NO_APP 7691; SLM-NEXT: retq # sched: [4:1.00] 7692; 7693; SANDY-LABEL: test_movnti: 7694; SANDY: # %bb.0: 7695; SANDY-NEXT: #APP 7696; SANDY-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7697; SANDY-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7698; SANDY-NEXT: #NO_APP 7699; SANDY-NEXT: retq # sched: [1:1.00] 7700; 7701; HASWELL-LABEL: test_movnti: 7702; HASWELL: # %bb.0: 7703; HASWELL-NEXT: #APP 7704; HASWELL-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7705; HASWELL-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7706; HASWELL-NEXT: #NO_APP 7707; HASWELL-NEXT: retq # sched: [7:1.00] 7708; 7709; BROADWELL-LABEL: test_movnti: 7710; BROADWELL: # %bb.0: 7711; BROADWELL-NEXT: #APP 7712; BROADWELL-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7713; BROADWELL-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7714; BROADWELL-NEXT: #NO_APP 7715; BROADWELL-NEXT: retq # sched: [7:1.00] 7716; 7717; SKYLAKE-LABEL: test_movnti: 7718; SKYLAKE: # %bb.0: 7719; SKYLAKE-NEXT: #APP 7720; SKYLAKE-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7721; SKYLAKE-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7722; SKYLAKE-NEXT: #NO_APP 7723; SKYLAKE-NEXT: retq # sched: [7:1.00] 7724; 7725; SKX-LABEL: test_movnti: 7726; SKX: # %bb.0: 7727; SKX-NEXT: #APP 7728; SKX-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7729; SKX-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7730; SKX-NEXT: #NO_APP 7731; SKX-NEXT: retq # sched: [7:1.00] 7732; 7733; BTVER2-LABEL: test_movnti: 7734; BTVER2: # %bb.0: 7735; BTVER2-NEXT: #APP 7736; BTVER2-NEXT: movntil %edi, (%rsi) # sched: [1:1.00] 7737; BTVER2-NEXT: movntiq %rdx, (%rcx) # sched: [1:1.00] 7738; BTVER2-NEXT: #NO_APP 7739; BTVER2-NEXT: retq # sched: [4:1.00] 7740; 7741; ZNVER1-LABEL: test_movnti: 7742; ZNVER1: # %bb.0: 7743; ZNVER1-NEXT: #APP 7744; ZNVER1-NEXT: movntil %edi, (%rsi) # sched: [1:0.50] 7745; ZNVER1-NEXT: movntiq %rdx, (%rcx) # sched: [1:0.50] 7746; ZNVER1-NEXT: #NO_APP 7747; ZNVER1-NEXT: retq # sched: [1:0.50] 7748 call void asm sideeffect "movnti $0, $1 \0A\09 movnti $2, $3", "r,*m,r,*m"(i32 %a0, i32 *%a1, i64 %a2, i64 *%a3) 7749 ret void 7750} 7751 7752define void @test_movs() optsize { 7753; GENERIC-LABEL: test_movs: 7754; GENERIC: # %bb.0: 7755; GENERIC-NEXT: #APP 7756; GENERIC-NEXT: movsb (%rsi), %es:(%rdi) # sched: [8:1.00] 7757; GENERIC-NEXT: movsw (%rsi), %es:(%rdi) # sched: [8:1.00] 7758; GENERIC-NEXT: movsl (%rsi), %es:(%rdi) # sched: [8:1.00] 7759; GENERIC-NEXT: movsq (%rsi), %es:(%rdi) # sched: [8:1.00] 7760; GENERIC-NEXT: #NO_APP 7761; GENERIC-NEXT: retq # sched: [1:1.00] 7762; 7763; ATOM-LABEL: test_movs: 7764; ATOM: # %bb.0: 7765; ATOM-NEXT: #APP 7766; ATOM-NEXT: movsb (%rsi), %es:(%rdi) # sched: [3:1.50] 7767; ATOM-NEXT: movsw (%rsi), %es:(%rdi) # sched: [3:1.50] 7768; ATOM-NEXT: movsl (%rsi), %es:(%rdi) # sched: [3:1.50] 7769; ATOM-NEXT: movsq (%rsi), %es:(%rdi) # sched: [3:1.50] 7770; ATOM-NEXT: #NO_APP 7771; ATOM-NEXT: retq # sched: [79:39.50] 7772; 7773; SLM-LABEL: test_movs: 7774; SLM: # %bb.0: 7775; SLM-NEXT: #APP 7776; SLM-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:1.00] 7777; SLM-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:1.00] 7778; SLM-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:1.00] 7779; SLM-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:1.00] 7780; SLM-NEXT: #NO_APP 7781; SLM-NEXT: retq # sched: [4:1.00] 7782; 7783; SANDY-LABEL: test_movs: 7784; SANDY: # %bb.0: 7785; SANDY-NEXT: #APP 7786; SANDY-NEXT: movsb (%rsi), %es:(%rdi) # sched: [8:1.00] 7787; SANDY-NEXT: movsw (%rsi), %es:(%rdi) # sched: [8:1.00] 7788; SANDY-NEXT: movsl (%rsi), %es:(%rdi) # sched: [8:1.00] 7789; SANDY-NEXT: movsq (%rsi), %es:(%rdi) # sched: [8:1.00] 7790; SANDY-NEXT: #NO_APP 7791; SANDY-NEXT: retq # sched: [1:1.00] 7792; 7793; HASWELL-LABEL: test_movs: 7794; HASWELL: # %bb.0: 7795; HASWELL-NEXT: #APP 7796; HASWELL-NEXT: movsb (%rsi), %es:(%rdi) # sched: [4:1.00] 7797; HASWELL-NEXT: movsw (%rsi), %es:(%rdi) # sched: [4:1.00] 7798; HASWELL-NEXT: movsl (%rsi), %es:(%rdi) # sched: [4:1.00] 7799; HASWELL-NEXT: movsq (%rsi), %es:(%rdi) # sched: [4:1.00] 7800; HASWELL-NEXT: #NO_APP 7801; HASWELL-NEXT: retq # sched: [7:1.00] 7802; 7803; BROADWELL-LABEL: test_movs: 7804; BROADWELL: # %bb.0: 7805; BROADWELL-NEXT: #APP 7806; BROADWELL-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.25] 7807; BROADWELL-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.25] 7808; BROADWELL-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.25] 7809; BROADWELL-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.25] 7810; BROADWELL-NEXT: #NO_APP 7811; BROADWELL-NEXT: retq # sched: [7:1.00] 7812; 7813; SKYLAKE-LABEL: test_movs: 7814; SKYLAKE: # %bb.0: 7815; SKYLAKE-NEXT: #APP 7816; SKYLAKE-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.25] 7817; SKYLAKE-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.25] 7818; SKYLAKE-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.25] 7819; SKYLAKE-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.25] 7820; SKYLAKE-NEXT: #NO_APP 7821; SKYLAKE-NEXT: retq # sched: [7:1.00] 7822; 7823; SKX-LABEL: test_movs: 7824; SKX: # %bb.0: 7825; SKX-NEXT: #APP 7826; SKX-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.25] 7827; SKX-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.25] 7828; SKX-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.25] 7829; SKX-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.25] 7830; SKX-NEXT: #NO_APP 7831; SKX-NEXT: retq # sched: [7:1.00] 7832; 7833; BTVER2-LABEL: test_movs: 7834; BTVER2: # %bb.0: 7835; BTVER2-NEXT: #APP 7836; BTVER2-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.50] 7837; BTVER2-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.50] 7838; BTVER2-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.50] 7839; BTVER2-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.50] 7840; BTVER2-NEXT: #NO_APP 7841; BTVER2-NEXT: retq # sched: [4:1.00] 7842; 7843; ZNVER1-LABEL: test_movs: 7844; ZNVER1: # %bb.0: 7845; ZNVER1-NEXT: #APP 7846; ZNVER1-NEXT: movsb (%rsi), %es:(%rdi) # sched: [100:0.25] 7847; ZNVER1-NEXT: movsw (%rsi), %es:(%rdi) # sched: [100:0.25] 7848; ZNVER1-NEXT: movsl (%rsi), %es:(%rdi) # sched: [100:0.25] 7849; ZNVER1-NEXT: movsq (%rsi), %es:(%rdi) # sched: [100:0.25] 7850; ZNVER1-NEXT: #NO_APP 7851; ZNVER1-NEXT: retq # sched: [1:0.50] 7852 call void asm sideeffect "movsb \0A\09 movsw \0A\09 movsl \0A\09 movsq", ""() 7853 ret void 7854} 7855 7856; TODO - test_movsx 7857; TODO - test_movzx 7858 7859define i64 @test_movslq(i32 %a0, i32 *%a1) optsize { 7860; GENERIC-LABEL: test_movslq: 7861; GENERIC: # %bb.0: 7862; GENERIC-NEXT: #APP 7863; GENERIC-NEXT: movslq %edi, %rax # sched: [1:0.33] 7864; GENERIC-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7865; GENERIC-NEXT: #NO_APP 7866; GENERIC-NEXT: orq %rcx, %rax # sched: [1:0.33] 7867; GENERIC-NEXT: retq # sched: [1:1.00] 7868; 7869; ATOM-LABEL: test_movslq: 7870; ATOM: # %bb.0: 7871; ATOM-NEXT: #APP 7872; ATOM-NEXT: movslq %edi, %rax # sched: [1:1.00] 7873; ATOM-NEXT: movslq (%rsi), %rcx # sched: [1:1.00] 7874; ATOM-NEXT: #NO_APP 7875; ATOM-NEXT: orq %rcx, %rax # sched: [1:0.50] 7876; ATOM-NEXT: retq # sched: [79:39.50] 7877; 7878; SLM-LABEL: test_movslq: 7879; SLM: # %bb.0: 7880; SLM-NEXT: #APP 7881; SLM-NEXT: movslq %edi, %rax # sched: [1:0.50] 7882; SLM-NEXT: movslq (%rsi), %rcx # sched: [4:1.00] 7883; SLM-NEXT: #NO_APP 7884; SLM-NEXT: orq %rcx, %rax # sched: [1:0.50] 7885; SLM-NEXT: retq # sched: [4:1.00] 7886; 7887; SANDY-LABEL: test_movslq: 7888; SANDY: # %bb.0: 7889; SANDY-NEXT: #APP 7890; SANDY-NEXT: movslq %edi, %rax # sched: [1:0.33] 7891; SANDY-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7892; SANDY-NEXT: #NO_APP 7893; SANDY-NEXT: orq %rcx, %rax # sched: [1:0.33] 7894; SANDY-NEXT: retq # sched: [1:1.00] 7895; 7896; HASWELL-LABEL: test_movslq: 7897; HASWELL: # %bb.0: 7898; HASWELL-NEXT: #APP 7899; HASWELL-NEXT: movslq %edi, %rax # sched: [1:0.25] 7900; HASWELL-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7901; HASWELL-NEXT: #NO_APP 7902; HASWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 7903; HASWELL-NEXT: retq # sched: [7:1.00] 7904; 7905; BROADWELL-LABEL: test_movslq: 7906; BROADWELL: # %bb.0: 7907; BROADWELL-NEXT: #APP 7908; BROADWELL-NEXT: movslq %edi, %rax # sched: [1:0.25] 7909; BROADWELL-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7910; BROADWELL-NEXT: #NO_APP 7911; BROADWELL-NEXT: orq %rcx, %rax # sched: [1:0.25] 7912; BROADWELL-NEXT: retq # sched: [7:1.00] 7913; 7914; SKYLAKE-LABEL: test_movslq: 7915; SKYLAKE: # %bb.0: 7916; SKYLAKE-NEXT: #APP 7917; SKYLAKE-NEXT: movslq %edi, %rax # sched: [1:0.25] 7918; SKYLAKE-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7919; SKYLAKE-NEXT: #NO_APP 7920; SKYLAKE-NEXT: orq %rcx, %rax # sched: [1:0.25] 7921; SKYLAKE-NEXT: retq # sched: [7:1.00] 7922; 7923; SKX-LABEL: test_movslq: 7924; SKX: # %bb.0: 7925; SKX-NEXT: #APP 7926; SKX-NEXT: movslq %edi, %rax # sched: [1:0.25] 7927; SKX-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7928; SKX-NEXT: #NO_APP 7929; SKX-NEXT: orq %rcx, %rax # sched: [1:0.25] 7930; SKX-NEXT: retq # sched: [7:1.00] 7931; 7932; BTVER2-LABEL: test_movslq: 7933; BTVER2: # %bb.0: 7934; BTVER2-NEXT: #APP 7935; BTVER2-NEXT: movslq %edi, %rax # sched: [1:0.50] 7936; BTVER2-NEXT: movslq (%rsi), %rcx # sched: [4:1.00] 7937; BTVER2-NEXT: #NO_APP 7938; BTVER2-NEXT: orq %rcx, %rax # sched: [1:0.50] 7939; BTVER2-NEXT: retq # sched: [4:1.00] 7940; 7941; ZNVER1-LABEL: test_movslq: 7942; ZNVER1: # %bb.0: 7943; ZNVER1-NEXT: #APP 7944; ZNVER1-NEXT: movslq %edi, %rax # sched: [1:0.25] 7945; ZNVER1-NEXT: movslq (%rsi), %rcx # sched: [5:0.50] 7946; ZNVER1-NEXT: #NO_APP 7947; ZNVER1-NEXT: orq %rcx, %rax # sched: [1:0.25] 7948; ZNVER1-NEXT: retq # sched: [1:0.50] 7949 %1 = call { i64, i64 } asm sideeffect "movslq $2, $0 \0A\09 movslq $3, $1", "=r,=r,r,*m"(i32 %a0, i32 *%a1) 7950 %2 = extractvalue { i64, i64 } %1, 0 7951 %3 = extractvalue { i64, i64 } %1, 1 7952 %4 = or i64 %2, %3 7953 ret i64 %4 7954} 7955 7956define void @test_mul(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 7957; GENERIC-LABEL: test_mul: 7958; GENERIC: # %bb.0: 7959; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 7960; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 7961; GENERIC-NEXT: #APP 7962; GENERIC-NEXT: mulb %dil # sched: [3:1.00] 7963; GENERIC-NEXT: mulb (%r8) # sched: [8:1.00] 7964; GENERIC-NEXT: mulw %si # sched: [4:1.33] 7965; GENERIC-NEXT: mulw (%r9) # sched: [9:1.33] 7966; GENERIC-NEXT: mull %edx # sched: [4:1.00] 7967; GENERIC-NEXT: mull (%rax) # sched: [9:1.00] 7968; GENERIC-NEXT: mulq %rcx # sched: [4:1.00] 7969; GENERIC-NEXT: mulq (%r10) # sched: [9:1.00] 7970; GENERIC-NEXT: #NO_APP 7971; GENERIC-NEXT: retq # sched: [1:1.00] 7972; 7973; ATOM-LABEL: test_mul: 7974; ATOM: # %bb.0: 7975; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 7976; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 7977; ATOM-NEXT: #APP 7978; ATOM-NEXT: mulb %dil # sched: [7:3.50] 7979; ATOM-NEXT: mulb (%r8) # sched: [7:3.50] 7980; ATOM-NEXT: mulw %si # sched: [7:3.50] 7981; ATOM-NEXT: mulw (%r9) # sched: [8:4.00] 7982; ATOM-NEXT: mull %edx # sched: [6:3.00] 7983; ATOM-NEXT: mull (%rax) # sched: [7:3.50] 7984; ATOM-NEXT: mulq %rcx # sched: [12:6.00] 7985; ATOM-NEXT: mulq (%r10) # sched: [12:6.00] 7986; ATOM-NEXT: #NO_APP 7987; ATOM-NEXT: retq # sched: [79:39.50] 7988; 7989; SLM-LABEL: test_mul: 7990; SLM: # %bb.0: 7991; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 7992; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 7993; SLM-NEXT: #APP 7994; SLM-NEXT: mulb %dil # sched: [3:1.00] 7995; SLM-NEXT: mulb (%r8) # sched: [6:1.00] 7996; SLM-NEXT: mulw %si # sched: [3:1.00] 7997; SLM-NEXT: mulw (%r9) # sched: [6:1.00] 7998; SLM-NEXT: mull %edx # sched: [3:1.00] 7999; SLM-NEXT: mull (%rax) # sched: [6:1.00] 8000; SLM-NEXT: mulq %rcx # sched: [3:1.00] 8001; SLM-NEXT: mulq (%r10) # sched: [6:1.00] 8002; SLM-NEXT: #NO_APP 8003; SLM-NEXT: retq # sched: [4:1.00] 8004; 8005; SANDY-LABEL: test_mul: 8006; SANDY: # %bb.0: 8007; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8008; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8009; SANDY-NEXT: #APP 8010; SANDY-NEXT: mulb %dil # sched: [3:1.00] 8011; SANDY-NEXT: mulb (%r8) # sched: [8:1.00] 8012; SANDY-NEXT: mulw %si # sched: [4:1.33] 8013; SANDY-NEXT: mulw (%r9) # sched: [9:1.33] 8014; SANDY-NEXT: mull %edx # sched: [4:1.00] 8015; SANDY-NEXT: mull (%rax) # sched: [9:1.00] 8016; SANDY-NEXT: mulq %rcx # sched: [4:1.00] 8017; SANDY-NEXT: mulq (%r10) # sched: [9:1.00] 8018; SANDY-NEXT: #NO_APP 8019; SANDY-NEXT: retq # sched: [1:1.00] 8020; 8021; HASWELL-LABEL: test_mul: 8022; HASWELL: # %bb.0: 8023; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8024; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8025; HASWELL-NEXT: #APP 8026; HASWELL-NEXT: mulb %dil # sched: [3:1.00] 8027; HASWELL-NEXT: mulb (%r8) # sched: [8:1.00] 8028; HASWELL-NEXT: mulw %si # sched: [4:1.00] 8029; HASWELL-NEXT: mulw (%r9) # sched: [9:1.00] 8030; HASWELL-NEXT: mull %edx # sched: [4:1.00] 8031; HASWELL-NEXT: mull (%rax) # sched: [9:1.00] 8032; HASWELL-NEXT: mulq %rcx # sched: [4:1.00] 8033; HASWELL-NEXT: mulq (%r10) # sched: [9:1.00] 8034; HASWELL-NEXT: #NO_APP 8035; HASWELL-NEXT: retq # sched: [7:1.00] 8036; 8037; BROADWELL-LABEL: test_mul: 8038; BROADWELL: # %bb.0: 8039; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8040; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8041; BROADWELL-NEXT: #APP 8042; BROADWELL-NEXT: mulb %dil # sched: [3:1.00] 8043; BROADWELL-NEXT: mulb (%r8) # sched: [8:1.00] 8044; BROADWELL-NEXT: mulw %si # sched: [4:1.00] 8045; BROADWELL-NEXT: mulw (%r9) # sched: [9:1.00] 8046; BROADWELL-NEXT: mull %edx # sched: [4:1.00] 8047; BROADWELL-NEXT: mull (%rax) # sched: [9:1.00] 8048; BROADWELL-NEXT: mulq %rcx # sched: [4:1.00] 8049; BROADWELL-NEXT: mulq (%r10) # sched: [9:1.00] 8050; BROADWELL-NEXT: #NO_APP 8051; BROADWELL-NEXT: retq # sched: [7:1.00] 8052; 8053; SKYLAKE-LABEL: test_mul: 8054; SKYLAKE: # %bb.0: 8055; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8056; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8057; SKYLAKE-NEXT: #APP 8058; SKYLAKE-NEXT: mulb %dil # sched: [3:1.00] 8059; SKYLAKE-NEXT: mulb (%r8) # sched: [8:1.00] 8060; SKYLAKE-NEXT: mulw %si # sched: [4:1.00] 8061; SKYLAKE-NEXT: mulw (%r9) # sched: [9:1.00] 8062; SKYLAKE-NEXT: mull %edx # sched: [4:1.00] 8063; SKYLAKE-NEXT: mull (%rax) # sched: [9:1.00] 8064; SKYLAKE-NEXT: mulq %rcx # sched: [4:1.00] 8065; SKYLAKE-NEXT: mulq (%r10) # sched: [9:1.00] 8066; SKYLAKE-NEXT: #NO_APP 8067; SKYLAKE-NEXT: retq # sched: [7:1.00] 8068; 8069; SKX-LABEL: test_mul: 8070; SKX: # %bb.0: 8071; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8072; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8073; SKX-NEXT: #APP 8074; SKX-NEXT: mulb %dil # sched: [3:1.00] 8075; SKX-NEXT: mulb (%r8) # sched: [8:1.00] 8076; SKX-NEXT: mulw %si # sched: [4:1.00] 8077; SKX-NEXT: mulw (%r9) # sched: [9:1.00] 8078; SKX-NEXT: mull %edx # sched: [4:1.00] 8079; SKX-NEXT: mull (%rax) # sched: [9:1.00] 8080; SKX-NEXT: mulq %rcx # sched: [4:1.00] 8081; SKX-NEXT: mulq (%r10) # sched: [9:1.00] 8082; SKX-NEXT: #NO_APP 8083; SKX-NEXT: retq # sched: [7:1.00] 8084; 8085; BTVER2-LABEL: test_mul: 8086; BTVER2: # %bb.0: 8087; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 8088; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 8089; BTVER2-NEXT: #APP 8090; BTVER2-NEXT: mulb %dil # sched: [3:1.00] 8091; BTVER2-NEXT: mulb (%r8) # sched: [6:1.00] 8092; BTVER2-NEXT: mulw %si # sched: [3:1.00] 8093; BTVER2-NEXT: mulw (%r9) # sched: [6:1.00] 8094; BTVER2-NEXT: mull %edx # sched: [3:1.00] 8095; BTVER2-NEXT: mull (%rax) # sched: [6:1.00] 8096; BTVER2-NEXT: mulq %rcx # sched: [6:4.00] 8097; BTVER2-NEXT: mulq (%r10) # sched: [9:4.00] 8098; BTVER2-NEXT: #NO_APP 8099; BTVER2-NEXT: retq # sched: [4:1.00] 8100; 8101; ZNVER1-LABEL: test_mul: 8102; ZNVER1: # %bb.0: 8103; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 8104; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 8105; ZNVER1-NEXT: #APP 8106; ZNVER1-NEXT: mulb %dil # sched: [4:1.00] 8107; ZNVER1-NEXT: mulb (%r8) # sched: [8:1.00] 8108; ZNVER1-NEXT: mulw %si # sched: [3:1.00] 8109; ZNVER1-NEXT: mulw (%r9) # sched: [8:1.00] 8110; ZNVER1-NEXT: mull %edx # sched: [3:1.00] 8111; ZNVER1-NEXT: mull (%rax) # sched: [8:1.00] 8112; ZNVER1-NEXT: mulq %rcx # sched: [4:1.00] 8113; ZNVER1-NEXT: mulq (%r10) # sched: [9:1.00] 8114; ZNVER1-NEXT: #NO_APP 8115; ZNVER1-NEXT: retq # sched: [1:0.50] 8116 tail call void asm "mulb $0 \0A\09 mulb $4 \0A\09 mulw $1 \0A\09 mulw $5 \0A\09 mull $2 \0A\09 mull $6 \0A\09 mulq $3 \0A\09 mulq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 8117 ret void 8118} 8119 8120define void @test_neg(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 8121; GENERIC-LABEL: test_neg: 8122; GENERIC: # %bb.0: 8123; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8124; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8125; GENERIC-NEXT: #APP 8126; GENERIC-NEXT: negb %dil # sched: [1:0.33] 8127; GENERIC-NEXT: negb (%r8) # sched: [7:1.00] 8128; GENERIC-NEXT: negw %si # sched: [1:0.33] 8129; GENERIC-NEXT: negw (%r9) # sched: [7:1.00] 8130; GENERIC-NEXT: negl %edx # sched: [1:0.33] 8131; GENERIC-NEXT: negl (%rax) # sched: [7:1.00] 8132; GENERIC-NEXT: negq %rcx # sched: [1:0.33] 8133; GENERIC-NEXT: negq (%r10) # sched: [7:1.00] 8134; GENERIC-NEXT: #NO_APP 8135; GENERIC-NEXT: retq # sched: [1:1.00] 8136; 8137; ATOM-LABEL: test_neg: 8138; ATOM: # %bb.0: 8139; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 8140; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 8141; ATOM-NEXT: #APP 8142; ATOM-NEXT: negb %dil # sched: [1:0.50] 8143; ATOM-NEXT: negb (%r8) # sched: [1:1.00] 8144; ATOM-NEXT: negw %si # sched: [1:0.50] 8145; ATOM-NEXT: negw (%r9) # sched: [1:1.00] 8146; ATOM-NEXT: negl %edx # sched: [1:0.50] 8147; ATOM-NEXT: negl (%rax) # sched: [1:1.00] 8148; ATOM-NEXT: negq %rcx # sched: [1:0.50] 8149; ATOM-NEXT: negq (%r10) # sched: [1:1.00] 8150; ATOM-NEXT: #NO_APP 8151; ATOM-NEXT: retq # sched: [79:39.50] 8152; 8153; SLM-LABEL: test_neg: 8154; SLM: # %bb.0: 8155; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 8156; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 8157; SLM-NEXT: #APP 8158; SLM-NEXT: negb %dil # sched: [1:0.50] 8159; SLM-NEXT: negb (%r8) # sched: [5:2.00] 8160; SLM-NEXT: negw %si # sched: [1:0.50] 8161; SLM-NEXT: negw (%r9) # sched: [5:2.00] 8162; SLM-NEXT: negl %edx # sched: [1:0.50] 8163; SLM-NEXT: negl (%rax) # sched: [5:2.00] 8164; SLM-NEXT: negq %rcx # sched: [1:0.50] 8165; SLM-NEXT: negq (%r10) # sched: [5:2.00] 8166; SLM-NEXT: #NO_APP 8167; SLM-NEXT: retq # sched: [4:1.00] 8168; 8169; SANDY-LABEL: test_neg: 8170; SANDY: # %bb.0: 8171; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8172; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8173; SANDY-NEXT: #APP 8174; SANDY-NEXT: negb %dil # sched: [1:0.33] 8175; SANDY-NEXT: negb (%r8) # sched: [7:1.00] 8176; SANDY-NEXT: negw %si # sched: [1:0.33] 8177; SANDY-NEXT: negw (%r9) # sched: [7:1.00] 8178; SANDY-NEXT: negl %edx # sched: [1:0.33] 8179; SANDY-NEXT: negl (%rax) # sched: [7:1.00] 8180; SANDY-NEXT: negq %rcx # sched: [1:0.33] 8181; SANDY-NEXT: negq (%r10) # sched: [7:1.00] 8182; SANDY-NEXT: #NO_APP 8183; SANDY-NEXT: retq # sched: [1:1.00] 8184; 8185; HASWELL-LABEL: test_neg: 8186; HASWELL: # %bb.0: 8187; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8188; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8189; HASWELL-NEXT: #APP 8190; HASWELL-NEXT: negb %dil # sched: [1:0.25] 8191; HASWELL-NEXT: negb (%r8) # sched: [7:1.00] 8192; HASWELL-NEXT: negw %si # sched: [1:0.25] 8193; HASWELL-NEXT: negw (%r9) # sched: [7:1.00] 8194; HASWELL-NEXT: negl %edx # sched: [1:0.25] 8195; HASWELL-NEXT: negl (%rax) # sched: [7:1.00] 8196; HASWELL-NEXT: negq %rcx # sched: [1:0.25] 8197; HASWELL-NEXT: negq (%r10) # sched: [7:1.00] 8198; HASWELL-NEXT: #NO_APP 8199; HASWELL-NEXT: retq # sched: [7:1.00] 8200; 8201; BROADWELL-LABEL: test_neg: 8202; BROADWELL: # %bb.0: 8203; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8204; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8205; BROADWELL-NEXT: #APP 8206; BROADWELL-NEXT: negb %dil # sched: [1:0.25] 8207; BROADWELL-NEXT: negb (%r8) # sched: [7:1.00] 8208; BROADWELL-NEXT: negw %si # sched: [1:0.25] 8209; BROADWELL-NEXT: negw (%r9) # sched: [7:1.00] 8210; BROADWELL-NEXT: negl %edx # sched: [1:0.25] 8211; BROADWELL-NEXT: negl (%rax) # sched: [7:1.00] 8212; BROADWELL-NEXT: negq %rcx # sched: [1:0.25] 8213; BROADWELL-NEXT: negq (%r10) # sched: [7:1.00] 8214; BROADWELL-NEXT: #NO_APP 8215; BROADWELL-NEXT: retq # sched: [7:1.00] 8216; 8217; SKYLAKE-LABEL: test_neg: 8218; SKYLAKE: # %bb.0: 8219; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8220; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8221; SKYLAKE-NEXT: #APP 8222; SKYLAKE-NEXT: negb %dil # sched: [1:0.25] 8223; SKYLAKE-NEXT: negb (%r8) # sched: [7:1.00] 8224; SKYLAKE-NEXT: negw %si # sched: [1:0.25] 8225; SKYLAKE-NEXT: negw (%r9) # sched: [7:1.00] 8226; SKYLAKE-NEXT: negl %edx # sched: [1:0.25] 8227; SKYLAKE-NEXT: negl (%rax) # sched: [7:1.00] 8228; SKYLAKE-NEXT: negq %rcx # sched: [1:0.25] 8229; SKYLAKE-NEXT: negq (%r10) # sched: [7:1.00] 8230; SKYLAKE-NEXT: #NO_APP 8231; SKYLAKE-NEXT: retq # sched: [7:1.00] 8232; 8233; SKX-LABEL: test_neg: 8234; SKX: # %bb.0: 8235; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8236; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8237; SKX-NEXT: #APP 8238; SKX-NEXT: negb %dil # sched: [1:0.25] 8239; SKX-NEXT: negb (%r8) # sched: [7:1.00] 8240; SKX-NEXT: negw %si # sched: [1:0.25] 8241; SKX-NEXT: negw (%r9) # sched: [7:1.00] 8242; SKX-NEXT: negl %edx # sched: [1:0.25] 8243; SKX-NEXT: negl (%rax) # sched: [7:1.00] 8244; SKX-NEXT: negq %rcx # sched: [1:0.25] 8245; SKX-NEXT: negq (%r10) # sched: [7:1.00] 8246; SKX-NEXT: #NO_APP 8247; SKX-NEXT: retq # sched: [7:1.00] 8248; 8249; BTVER2-LABEL: test_neg: 8250; BTVER2: # %bb.0: 8251; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 8252; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 8253; BTVER2-NEXT: #APP 8254; BTVER2-NEXT: negb %dil # sched: [1:0.50] 8255; BTVER2-NEXT: negb (%r8) # sched: [5:1.00] 8256; BTVER2-NEXT: negw %si # sched: [1:0.50] 8257; BTVER2-NEXT: negw (%r9) # sched: [5:1.00] 8258; BTVER2-NEXT: negl %edx # sched: [1:0.50] 8259; BTVER2-NEXT: negl (%rax) # sched: [5:1.00] 8260; BTVER2-NEXT: negq %rcx # sched: [1:0.50] 8261; BTVER2-NEXT: negq (%r10) # sched: [5:1.00] 8262; BTVER2-NEXT: #NO_APP 8263; BTVER2-NEXT: retq # sched: [4:1.00] 8264; 8265; ZNVER1-LABEL: test_neg: 8266; ZNVER1: # %bb.0: 8267; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 8268; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 8269; ZNVER1-NEXT: #APP 8270; ZNVER1-NEXT: negb %dil # sched: [1:0.25] 8271; ZNVER1-NEXT: negb (%r8) # sched: [5:0.50] 8272; ZNVER1-NEXT: negw %si # sched: [1:0.25] 8273; ZNVER1-NEXT: negw (%r9) # sched: [5:0.50] 8274; ZNVER1-NEXT: negl %edx # sched: [1:0.25] 8275; ZNVER1-NEXT: negl (%rax) # sched: [5:0.50] 8276; ZNVER1-NEXT: negq %rcx # sched: [1:0.25] 8277; ZNVER1-NEXT: negq (%r10) # sched: [5:0.50] 8278; ZNVER1-NEXT: #NO_APP 8279; ZNVER1-NEXT: retq # sched: [1:0.50] 8280 tail call void asm "negb $0 \0A\09 negb $4 \0A\09 negw $1 \0A\09 negw $5 \0A\09 negl $2 \0A\09 negl $6 \0A\09 negq $3 \0A\09 negq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 8281 ret void 8282} 8283 8284define void @test_nop(i16 %a0, i32 %a1, i64 %a2, i16 *%p0, i32 *%p1, i64 *%p2) optsize { 8285; GENERIC-LABEL: test_nop: 8286; GENERIC: # %bb.0: 8287; GENERIC-NEXT: #APP 8288; GENERIC-NEXT: nop # sched: [1:0.25] 8289; GENERIC-NEXT: nopw %di # sched: [1:0.25] 8290; GENERIC-NEXT: nopw (%rcx) # sched: [1:0.25] 8291; GENERIC-NEXT: nopl %esi # sched: [1:0.25] 8292; GENERIC-NEXT: nopl (%r8) # sched: [1:0.25] 8293; GENERIC-NEXT: nopq %rdx # sched: [1:0.25] 8294; GENERIC-NEXT: nopq (%r9) # sched: [1:0.25] 8295; GENERIC-NEXT: #NO_APP 8296; GENERIC-NEXT: retq # sched: [1:1.00] 8297; 8298; ATOM-LABEL: test_nop: 8299; ATOM: # %bb.0: 8300; ATOM-NEXT: #APP 8301; ATOM-NEXT: nop # sched: [1:0.50] 8302; ATOM-NEXT: nopw %di # sched: [1:0.50] 8303; ATOM-NEXT: nopw (%rcx) # sched: [1:0.50] 8304; ATOM-NEXT: nopl %esi # sched: [1:0.50] 8305; ATOM-NEXT: nopl (%r8) # sched: [1:0.50] 8306; ATOM-NEXT: nopq %rdx # sched: [1:0.50] 8307; ATOM-NEXT: nopq (%r9) # sched: [1:0.50] 8308; ATOM-NEXT: #NO_APP 8309; ATOM-NEXT: retq # sched: [79:39.50] 8310; 8311; SLM-LABEL: test_nop: 8312; SLM: # %bb.0: 8313; SLM-NEXT: #APP 8314; SLM-NEXT: nop # sched: [1:0.50] 8315; SLM-NEXT: nopw %di # sched: [1:0.50] 8316; SLM-NEXT: nopw (%rcx) # sched: [1:0.50] 8317; SLM-NEXT: nopl %esi # sched: [1:0.50] 8318; SLM-NEXT: nopl (%r8) # sched: [1:0.50] 8319; SLM-NEXT: nopq %rdx # sched: [1:0.50] 8320; SLM-NEXT: nopq (%r9) # sched: [1:0.50] 8321; SLM-NEXT: #NO_APP 8322; SLM-NEXT: retq # sched: [4:1.00] 8323; 8324; SANDY-LABEL: test_nop: 8325; SANDY: # %bb.0: 8326; SANDY-NEXT: #APP 8327; SANDY-NEXT: nop # sched: [1:0.25] 8328; SANDY-NEXT: nopw %di # sched: [1:0.25] 8329; SANDY-NEXT: nopw (%rcx) # sched: [1:0.25] 8330; SANDY-NEXT: nopl %esi # sched: [1:0.25] 8331; SANDY-NEXT: nopl (%r8) # sched: [1:0.25] 8332; SANDY-NEXT: nopq %rdx # sched: [1:0.25] 8333; SANDY-NEXT: nopq (%r9) # sched: [1:0.25] 8334; SANDY-NEXT: #NO_APP 8335; SANDY-NEXT: retq # sched: [1:1.00] 8336; 8337; HASWELL-LABEL: test_nop: 8338; HASWELL: # %bb.0: 8339; HASWELL-NEXT: #APP 8340; HASWELL-NEXT: nop # sched: [1:0.25] 8341; HASWELL-NEXT: nopw %di # sched: [1:0.25] 8342; HASWELL-NEXT: nopw (%rcx) # sched: [1:0.25] 8343; HASWELL-NEXT: nopl %esi # sched: [1:0.25] 8344; HASWELL-NEXT: nopl (%r8) # sched: [1:0.25] 8345; HASWELL-NEXT: nopq %rdx # sched: [1:0.25] 8346; HASWELL-NEXT: nopq (%r9) # sched: [1:0.25] 8347; HASWELL-NEXT: #NO_APP 8348; HASWELL-NEXT: retq # sched: [7:1.00] 8349; 8350; BROADWELL-LABEL: test_nop: 8351; BROADWELL: # %bb.0: 8352; BROADWELL-NEXT: #APP 8353; BROADWELL-NEXT: nop # sched: [1:0.25] 8354; BROADWELL-NEXT: nopw %di # sched: [1:0.25] 8355; BROADWELL-NEXT: nopw (%rcx) # sched: [1:0.25] 8356; BROADWELL-NEXT: nopl %esi # sched: [1:0.25] 8357; BROADWELL-NEXT: nopl (%r8) # sched: [1:0.25] 8358; BROADWELL-NEXT: nopq %rdx # sched: [1:0.25] 8359; BROADWELL-NEXT: nopq (%r9) # sched: [1:0.25] 8360; BROADWELL-NEXT: #NO_APP 8361; BROADWELL-NEXT: retq # sched: [7:1.00] 8362; 8363; SKYLAKE-LABEL: test_nop: 8364; SKYLAKE: # %bb.0: 8365; SKYLAKE-NEXT: #APP 8366; SKYLAKE-NEXT: nop # sched: [1:0.17] 8367; SKYLAKE-NEXT: nopw %di # sched: [1:0.17] 8368; SKYLAKE-NEXT: nopw (%rcx) # sched: [1:0.17] 8369; SKYLAKE-NEXT: nopl %esi # sched: [1:0.17] 8370; SKYLAKE-NEXT: nopl (%r8) # sched: [1:0.17] 8371; SKYLAKE-NEXT: nopq %rdx # sched: [1:0.17] 8372; SKYLAKE-NEXT: nopq (%r9) # sched: [1:0.17] 8373; SKYLAKE-NEXT: #NO_APP 8374; SKYLAKE-NEXT: retq # sched: [7:1.00] 8375; 8376; SKX-LABEL: test_nop: 8377; SKX: # %bb.0: 8378; SKX-NEXT: #APP 8379; SKX-NEXT: nop # sched: [1:0.17] 8380; SKX-NEXT: nopw %di # sched: [1:0.17] 8381; SKX-NEXT: nopw (%rcx) # sched: [1:0.17] 8382; SKX-NEXT: nopl %esi # sched: [1:0.17] 8383; SKX-NEXT: nopl (%r8) # sched: [1:0.17] 8384; SKX-NEXT: nopq %rdx # sched: [1:0.17] 8385; SKX-NEXT: nopq (%r9) # sched: [1:0.17] 8386; SKX-NEXT: #NO_APP 8387; SKX-NEXT: retq # sched: [7:1.00] 8388; 8389; BTVER2-LABEL: test_nop: 8390; BTVER2: # %bb.0: 8391; BTVER2-NEXT: #APP 8392; BTVER2-NEXT: nop # sched: [1:0.50] 8393; BTVER2-NEXT: nopw %di # sched: [1:0.50] 8394; BTVER2-NEXT: nopw (%rcx) # sched: [1:0.50] 8395; BTVER2-NEXT: nopl %esi # sched: [1:0.50] 8396; BTVER2-NEXT: nopl (%r8) # sched: [1:0.50] 8397; BTVER2-NEXT: nopq %rdx # sched: [1:0.50] 8398; BTVER2-NEXT: nopq (%r9) # sched: [1:0.50] 8399; BTVER2-NEXT: #NO_APP 8400; BTVER2-NEXT: retq # sched: [4:1.00] 8401; 8402; ZNVER1-LABEL: test_nop: 8403; ZNVER1: # %bb.0: 8404; ZNVER1-NEXT: #APP 8405; ZNVER1-NEXT: nop # sched: [1:0.25] 8406; ZNVER1-NEXT: nopw %di # sched: [1:0.25] 8407; ZNVER1-NEXT: nopw (%rcx) # sched: [1:0.25] 8408; ZNVER1-NEXT: nopl %esi # sched: [1:0.25] 8409; ZNVER1-NEXT: nopl (%r8) # sched: [1:0.25] 8410; ZNVER1-NEXT: nopq %rdx # sched: [1:0.25] 8411; ZNVER1-NEXT: nopq (%r9) # sched: [1:0.25] 8412; ZNVER1-NEXT: #NO_APP 8413; ZNVER1-NEXT: retq # sched: [1:0.50] 8414 tail call void asm "nop \0A\09 nopw $0 \0A\09 nopw $3 \0A\09 nopl $1 \0A\09 nopl $4 \0A\09 nopq $2 \0A\09 nopq $5", "r,r,r,*m,*m,*m"(i16 %a0, i32 %a1, i64 %a2, i16 *%p0, i32 *%p1, i64 *%p2) nounwind 8415 ret void 8416} 8417 8418define void @test_not(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) optsize { 8419; GENERIC-LABEL: test_not: 8420; GENERIC: # %bb.0: 8421; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8422; GENERIC-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8423; GENERIC-NEXT: #APP 8424; GENERIC-NEXT: notb %dil # sched: [1:0.33] 8425; GENERIC-NEXT: notb (%r8) # sched: [7:1.00] 8426; GENERIC-NEXT: notw %si # sched: [1:0.33] 8427; GENERIC-NEXT: notw (%r9) # sched: [7:1.00] 8428; GENERIC-NEXT: notl %edx # sched: [1:0.33] 8429; GENERIC-NEXT: notl (%rax) # sched: [7:1.00] 8430; GENERIC-NEXT: notq %rcx # sched: [1:0.33] 8431; GENERIC-NEXT: notq (%r10) # sched: [7:1.00] 8432; GENERIC-NEXT: #NO_APP 8433; GENERIC-NEXT: retq # sched: [1:1.00] 8434; 8435; ATOM-LABEL: test_not: 8436; ATOM: # %bb.0: 8437; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [1:1.00] 8438; ATOM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [1:1.00] 8439; ATOM-NEXT: #APP 8440; ATOM-NEXT: notb %dil # sched: [1:0.50] 8441; ATOM-NEXT: notb (%r8) # sched: [1:1.00] 8442; ATOM-NEXT: notw %si # sched: [1:0.50] 8443; ATOM-NEXT: notw (%r9) # sched: [1:1.00] 8444; ATOM-NEXT: notl %edx # sched: [1:0.50] 8445; ATOM-NEXT: notl (%rax) # sched: [1:1.00] 8446; ATOM-NEXT: notq %rcx # sched: [1:0.50] 8447; ATOM-NEXT: notq (%r10) # sched: [1:1.00] 8448; ATOM-NEXT: #NO_APP 8449; ATOM-NEXT: retq # sched: [79:39.50] 8450; 8451; SLM-LABEL: test_not: 8452; SLM: # %bb.0: 8453; SLM-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [3:1.00] 8454; SLM-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [3:1.00] 8455; SLM-NEXT: #APP 8456; SLM-NEXT: notb %dil # sched: [1:0.50] 8457; SLM-NEXT: notb (%r8) # sched: [5:2.00] 8458; SLM-NEXT: notw %si # sched: [1:0.50] 8459; SLM-NEXT: notw (%r9) # sched: [5:2.00] 8460; SLM-NEXT: notl %edx # sched: [1:0.50] 8461; SLM-NEXT: notl (%rax) # sched: [5:2.00] 8462; SLM-NEXT: notq %rcx # sched: [1:0.50] 8463; SLM-NEXT: notq (%r10) # sched: [5:2.00] 8464; SLM-NEXT: #NO_APP 8465; SLM-NEXT: retq # sched: [4:1.00] 8466; 8467; SANDY-LABEL: test_not: 8468; SANDY: # %bb.0: 8469; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8470; SANDY-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8471; SANDY-NEXT: #APP 8472; SANDY-NEXT: notb %dil # sched: [1:0.33] 8473; SANDY-NEXT: notb (%r8) # sched: [7:1.00] 8474; SANDY-NEXT: notw %si # sched: [1:0.33] 8475; SANDY-NEXT: notw (%r9) # sched: [7:1.00] 8476; SANDY-NEXT: notl %edx # sched: [1:0.33] 8477; SANDY-NEXT: notl (%rax) # sched: [7:1.00] 8478; SANDY-NEXT: notq %rcx # sched: [1:0.33] 8479; SANDY-NEXT: notq (%r10) # sched: [7:1.00] 8480; SANDY-NEXT: #NO_APP 8481; SANDY-NEXT: retq # sched: [1:1.00] 8482; 8483; HASWELL-LABEL: test_not: 8484; HASWELL: # %bb.0: 8485; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8486; HASWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8487; HASWELL-NEXT: #APP 8488; HASWELL-NEXT: notb %dil # sched: [1:0.25] 8489; HASWELL-NEXT: notb (%r8) # sched: [7:1.00] 8490; HASWELL-NEXT: notw %si # sched: [1:0.25] 8491; HASWELL-NEXT: notw (%r9) # sched: [7:1.00] 8492; HASWELL-NEXT: notl %edx # sched: [1:0.25] 8493; HASWELL-NEXT: notl (%rax) # sched: [7:1.00] 8494; HASWELL-NEXT: notq %rcx # sched: [1:0.25] 8495; HASWELL-NEXT: notq (%r10) # sched: [7:1.00] 8496; HASWELL-NEXT: #NO_APP 8497; HASWELL-NEXT: retq # sched: [7:1.00] 8498; 8499; BROADWELL-LABEL: test_not: 8500; BROADWELL: # %bb.0: 8501; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8502; BROADWELL-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8503; BROADWELL-NEXT: #APP 8504; BROADWELL-NEXT: notb %dil # sched: [1:0.25] 8505; BROADWELL-NEXT: notb (%r8) # sched: [7:1.00] 8506; BROADWELL-NEXT: notw %si # sched: [1:0.25] 8507; BROADWELL-NEXT: notw (%r9) # sched: [7:1.00] 8508; BROADWELL-NEXT: notl %edx # sched: [1:0.25] 8509; BROADWELL-NEXT: notl (%rax) # sched: [7:1.00] 8510; BROADWELL-NEXT: notq %rcx # sched: [1:0.25] 8511; BROADWELL-NEXT: notq (%r10) # sched: [7:1.00] 8512; BROADWELL-NEXT: #NO_APP 8513; BROADWELL-NEXT: retq # sched: [7:1.00] 8514; 8515; SKYLAKE-LABEL: test_not: 8516; SKYLAKE: # %bb.0: 8517; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8518; SKYLAKE-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8519; SKYLAKE-NEXT: #APP 8520; SKYLAKE-NEXT: notb %dil # sched: [1:0.25] 8521; SKYLAKE-NEXT: notb (%r8) # sched: [7:1.00] 8522; SKYLAKE-NEXT: notw %si # sched: [1:0.25] 8523; SKYLAKE-NEXT: notw (%r9) # sched: [7:1.00] 8524; SKYLAKE-NEXT: notl %edx # sched: [1:0.25] 8525; SKYLAKE-NEXT: notl (%rax) # sched: [7:1.00] 8526; SKYLAKE-NEXT: notq %rcx # sched: [1:0.25] 8527; SKYLAKE-NEXT: notq (%r10) # sched: [7:1.00] 8528; SKYLAKE-NEXT: #NO_APP 8529; SKYLAKE-NEXT: retq # sched: [7:1.00] 8530; 8531; SKX-LABEL: test_not: 8532; SKX: # %bb.0: 8533; SKX-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:0.50] 8534; SKX-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:0.50] 8535; SKX-NEXT: #APP 8536; SKX-NEXT: notb %dil # sched: [1:0.25] 8537; SKX-NEXT: notb (%r8) # sched: [7:1.00] 8538; SKX-NEXT: notw %si # sched: [1:0.25] 8539; SKX-NEXT: notw (%r9) # sched: [7:1.00] 8540; SKX-NEXT: notl %edx # sched: [1:0.25] 8541; SKX-NEXT: notl (%rax) # sched: [7:1.00] 8542; SKX-NEXT: notq %rcx # sched: [1:0.25] 8543; SKX-NEXT: notq (%r10) # sched: [7:1.00] 8544; SKX-NEXT: #NO_APP 8545; SKX-NEXT: retq # sched: [7:1.00] 8546; 8547; BTVER2-LABEL: test_not: 8548; BTVER2: # %bb.0: 8549; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [5:1.00] 8550; BTVER2-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [5:1.00] 8551; BTVER2-NEXT: #APP 8552; BTVER2-NEXT: notb %dil # sched: [1:0.50] 8553; BTVER2-NEXT: notb (%r8) # sched: [5:1.00] 8554; BTVER2-NEXT: notw %si # sched: [1:0.50] 8555; BTVER2-NEXT: notw (%r9) # sched: [5:1.00] 8556; BTVER2-NEXT: notl %edx # sched: [1:0.50] 8557; BTVER2-NEXT: notl (%rax) # sched: [5:1.00] 8558; BTVER2-NEXT: notq %rcx # sched: [1:0.50] 8559; BTVER2-NEXT: notq (%r10) # sched: [5:1.00] 8560; BTVER2-NEXT: #NO_APP 8561; BTVER2-NEXT: retq # sched: [4:1.00] 8562; 8563; ZNVER1-LABEL: test_not: 8564; ZNVER1: # %bb.0: 8565; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %r10 # sched: [8:0.50] 8566; ZNVER1-NEXT: movq {{[0-9]+}}(%rsp), %rax # sched: [8:0.50] 8567; ZNVER1-NEXT: #APP 8568; ZNVER1-NEXT: notb %dil # sched: [1:0.25] 8569; ZNVER1-NEXT: notb (%r8) # sched: [5:0.50] 8570; ZNVER1-NEXT: notw %si # sched: [1:0.25] 8571; ZNVER1-NEXT: notw (%r9) # sched: [5:0.50] 8572; ZNVER1-NEXT: notl %edx # sched: [1:0.25] 8573; ZNVER1-NEXT: notl (%rax) # sched: [5:0.50] 8574; ZNVER1-NEXT: notq %rcx # sched: [1:0.25] 8575; ZNVER1-NEXT: notq (%r10) # sched: [5:0.50] 8576; ZNVER1-NEXT: #NO_APP 8577; ZNVER1-NEXT: retq # sched: [1:0.50] 8578 tail call void asm "notb $0 \0A\09 notb $4 \0A\09 notw $1 \0A\09 notw $5 \0A\09 notl $2 \0A\09 notl $6 \0A\09 notq $3 \0A\09 notq $7", "r,r,r,r,*m,*m,*m,*m"(i8 %a0, i16 %a1, i32 %a2, i64 %a3, i8 *%p0, i16 *%p1, i32 *%p2, i64 *%p3) nounwind 8579 ret void 8580} 8581 8582define void @test_or_8(i8 %a0, i8* %a1, i8 %a2) optsize { 8583; GENERIC-LABEL: test_or_8: 8584; GENERIC: # %bb.0: 8585; GENERIC-NEXT: #APP 8586; GENERIC-NEXT: orb $7, %al # sched: [1:0.33] 8587; GENERIC-NEXT: orb $7, %dil # sched: [1:0.33] 8588; GENERIC-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8589; GENERIC-NEXT: orb %dl, %dil # sched: [1:0.33] 8590; GENERIC-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8591; GENERIC-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8592; GENERIC-NEXT: #NO_APP 8593; GENERIC-NEXT: retq # sched: [1:1.00] 8594; 8595; ATOM-LABEL: test_or_8: 8596; ATOM: # %bb.0: 8597; ATOM-NEXT: #APP 8598; ATOM-NEXT: orb $7, %al # sched: [1:0.50] 8599; ATOM-NEXT: orb $7, %dil # sched: [1:0.50] 8600; ATOM-NEXT: orb $7, (%rsi) # sched: [1:1.00] 8601; ATOM-NEXT: orb %dl, %dil # sched: [1:0.50] 8602; ATOM-NEXT: orb %dil, (%rsi) # sched: [1:1.00] 8603; ATOM-NEXT: orb (%rsi), %dil # sched: [1:1.00] 8604; ATOM-NEXT: #NO_APP 8605; ATOM-NEXT: retq # sched: [79:39.50] 8606; 8607; SLM-LABEL: test_or_8: 8608; SLM: # %bb.0: 8609; SLM-NEXT: #APP 8610; SLM-NEXT: orb $7, %al # sched: [1:0.50] 8611; SLM-NEXT: orb $7, %dil # sched: [1:0.50] 8612; SLM-NEXT: orb $7, (%rsi) # sched: [5:2.00] 8613; SLM-NEXT: orb %dl, %dil # sched: [1:0.50] 8614; SLM-NEXT: orb %dil, (%rsi) # sched: [5:2.00] 8615; SLM-NEXT: orb (%rsi), %dil # sched: [4:1.00] 8616; SLM-NEXT: #NO_APP 8617; SLM-NEXT: retq # sched: [4:1.00] 8618; 8619; SANDY-LABEL: test_or_8: 8620; SANDY: # %bb.0: 8621; SANDY-NEXT: #APP 8622; SANDY-NEXT: orb $7, %al # sched: [1:0.33] 8623; SANDY-NEXT: orb $7, %dil # sched: [1:0.33] 8624; SANDY-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8625; SANDY-NEXT: orb %dl, %dil # sched: [1:0.33] 8626; SANDY-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8627; SANDY-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8628; SANDY-NEXT: #NO_APP 8629; SANDY-NEXT: retq # sched: [1:1.00] 8630; 8631; HASWELL-LABEL: test_or_8: 8632; HASWELL: # %bb.0: 8633; HASWELL-NEXT: #APP 8634; HASWELL-NEXT: orb $7, %al # sched: [1:0.25] 8635; HASWELL-NEXT: orb $7, %dil # sched: [1:0.25] 8636; HASWELL-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8637; HASWELL-NEXT: orb %dl, %dil # sched: [1:0.25] 8638; HASWELL-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8639; HASWELL-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8640; HASWELL-NEXT: #NO_APP 8641; HASWELL-NEXT: retq # sched: [7:1.00] 8642; 8643; BROADWELL-LABEL: test_or_8: 8644; BROADWELL: # %bb.0: 8645; BROADWELL-NEXT: #APP 8646; BROADWELL-NEXT: orb $7, %al # sched: [1:0.25] 8647; BROADWELL-NEXT: orb $7, %dil # sched: [1:0.25] 8648; BROADWELL-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8649; BROADWELL-NEXT: orb %dl, %dil # sched: [1:0.25] 8650; BROADWELL-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8651; BROADWELL-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8652; BROADWELL-NEXT: #NO_APP 8653; BROADWELL-NEXT: retq # sched: [7:1.00] 8654; 8655; SKYLAKE-LABEL: test_or_8: 8656; SKYLAKE: # %bb.0: 8657; SKYLAKE-NEXT: #APP 8658; SKYLAKE-NEXT: orb $7, %al # sched: [1:0.25] 8659; SKYLAKE-NEXT: orb $7, %dil # sched: [1:0.25] 8660; SKYLAKE-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8661; SKYLAKE-NEXT: orb %dl, %dil # sched: [1:0.25] 8662; SKYLAKE-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8663; SKYLAKE-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8664; SKYLAKE-NEXT: #NO_APP 8665; SKYLAKE-NEXT: retq # sched: [7:1.00] 8666; 8667; SKX-LABEL: test_or_8: 8668; SKX: # %bb.0: 8669; SKX-NEXT: #APP 8670; SKX-NEXT: orb $7, %al # sched: [1:0.25] 8671; SKX-NEXT: orb $7, %dil # sched: [1:0.25] 8672; SKX-NEXT: orb $7, (%rsi) # sched: [7:1.00] 8673; SKX-NEXT: orb %dl, %dil # sched: [1:0.25] 8674; SKX-NEXT: orb %dil, (%rsi) # sched: [7:1.00] 8675; SKX-NEXT: orb (%rsi), %dil # sched: [6:0.50] 8676; SKX-NEXT: #NO_APP 8677; SKX-NEXT: retq # sched: [7:1.00] 8678; 8679; BTVER2-LABEL: test_or_8: 8680; BTVER2: # %bb.0: 8681; BTVER2-NEXT: #APP 8682; BTVER2-NEXT: orb $7, %al # sched: [1:0.50] 8683; BTVER2-NEXT: orb $7, %dil # sched: [1:0.50] 8684; BTVER2-NEXT: orb $7, (%rsi) # sched: [5:1.00] 8685; BTVER2-NEXT: orb %dl, %dil # sched: [1:0.50] 8686; BTVER2-NEXT: orb %dil, (%rsi) # sched: [5:1.00] 8687; BTVER2-NEXT: orb (%rsi), %dil # sched: [4:1.00] 8688; BTVER2-NEXT: #NO_APP 8689; BTVER2-NEXT: retq # sched: [4:1.00] 8690; 8691; ZNVER1-LABEL: test_or_8: 8692; ZNVER1: # %bb.0: 8693; ZNVER1-NEXT: #APP 8694; ZNVER1-NEXT: orb $7, %al # sched: [1:0.25] 8695; ZNVER1-NEXT: orb $7, %dil # sched: [1:0.25] 8696; ZNVER1-NEXT: orb $7, (%rsi) # sched: [5:0.50] 8697; ZNVER1-NEXT: orb %dl, %dil # sched: [1:0.25] 8698; ZNVER1-NEXT: orb %dil, (%rsi) # sched: [5:0.50] 8699; ZNVER1-NEXT: orb (%rsi), %dil # sched: [5:0.50] 8700; ZNVER1-NEXT: #NO_APP 8701; ZNVER1-NEXT: retq # sched: [1:0.50] 8702 tail call void asm "orb $3, %AL \0A\09 orb $3, $0 \0A\09 orb $3, $2 \0A\09 orb $1, $0 \0A\09 orb $0, $2 \0A\09 orb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 8703 ret void 8704} 8705define void @test_or_16(i16 %a0, i16* %a1, i16 %a2) optsize { 8706; GENERIC-LABEL: test_or_16: 8707; GENERIC: # %bb.0: 8708; GENERIC-NEXT: #APP 8709; GENERIC-NEXT: orw $511, %ax # imm = 0x1FF 8710; GENERIC-NEXT: # sched: [1:0.33] 8711; GENERIC-NEXT: orw $511, %di # imm = 0x1FF 8712; GENERIC-NEXT: # sched: [1:0.33] 8713; GENERIC-NEXT: orw $511, (%rsi) # imm = 0x1FF 8714; GENERIC-NEXT: # sched: [7:1.00] 8715; GENERIC-NEXT: orw $7, %di # sched: [1:0.33] 8716; GENERIC-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8717; GENERIC-NEXT: orw %dx, %di # sched: [1:0.33] 8718; GENERIC-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8719; GENERIC-NEXT: orw (%rsi), %di # sched: [6:0.50] 8720; GENERIC-NEXT: #NO_APP 8721; GENERIC-NEXT: retq # sched: [1:1.00] 8722; 8723; ATOM-LABEL: test_or_16: 8724; ATOM: # %bb.0: 8725; ATOM-NEXT: #APP 8726; ATOM-NEXT: orw $511, %ax # imm = 0x1FF 8727; ATOM-NEXT: # sched: [1:0.50] 8728; ATOM-NEXT: orw $511, %di # imm = 0x1FF 8729; ATOM-NEXT: # sched: [1:0.50] 8730; ATOM-NEXT: orw $511, (%rsi) # imm = 0x1FF 8731; ATOM-NEXT: # sched: [1:1.00] 8732; ATOM-NEXT: orw $7, %di # sched: [1:0.50] 8733; ATOM-NEXT: orw $7, (%rsi) # sched: [1:1.00] 8734; ATOM-NEXT: orw %dx, %di # sched: [1:0.50] 8735; ATOM-NEXT: orw %di, (%rsi) # sched: [1:1.00] 8736; ATOM-NEXT: orw (%rsi), %di # sched: [1:1.00] 8737; ATOM-NEXT: #NO_APP 8738; ATOM-NEXT: retq # sched: [79:39.50] 8739; 8740; SLM-LABEL: test_or_16: 8741; SLM: # %bb.0: 8742; SLM-NEXT: #APP 8743; SLM-NEXT: orw $511, %ax # imm = 0x1FF 8744; SLM-NEXT: # sched: [1:0.50] 8745; SLM-NEXT: orw $511, %di # imm = 0x1FF 8746; SLM-NEXT: # sched: [1:0.50] 8747; SLM-NEXT: orw $511, (%rsi) # imm = 0x1FF 8748; SLM-NEXT: # sched: [5:2.00] 8749; SLM-NEXT: orw $7, %di # sched: [1:0.50] 8750; SLM-NEXT: orw $7, (%rsi) # sched: [5:2.00] 8751; SLM-NEXT: orw %dx, %di # sched: [1:0.50] 8752; SLM-NEXT: orw %di, (%rsi) # sched: [5:2.00] 8753; SLM-NEXT: orw (%rsi), %di # sched: [4:1.00] 8754; SLM-NEXT: #NO_APP 8755; SLM-NEXT: retq # sched: [4:1.00] 8756; 8757; SANDY-LABEL: test_or_16: 8758; SANDY: # %bb.0: 8759; SANDY-NEXT: #APP 8760; SANDY-NEXT: orw $511, %ax # imm = 0x1FF 8761; SANDY-NEXT: # sched: [1:0.33] 8762; SANDY-NEXT: orw $511, %di # imm = 0x1FF 8763; SANDY-NEXT: # sched: [1:0.33] 8764; SANDY-NEXT: orw $511, (%rsi) # imm = 0x1FF 8765; SANDY-NEXT: # sched: [7:1.00] 8766; SANDY-NEXT: orw $7, %di # sched: [1:0.33] 8767; SANDY-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8768; SANDY-NEXT: orw %dx, %di # sched: [1:0.33] 8769; SANDY-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8770; SANDY-NEXT: orw (%rsi), %di # sched: [6:0.50] 8771; SANDY-NEXT: #NO_APP 8772; SANDY-NEXT: retq # sched: [1:1.00] 8773; 8774; HASWELL-LABEL: test_or_16: 8775; HASWELL: # %bb.0: 8776; HASWELL-NEXT: #APP 8777; HASWELL-NEXT: orw $511, %ax # imm = 0x1FF 8778; HASWELL-NEXT: # sched: [1:0.25] 8779; HASWELL-NEXT: orw $511, %di # imm = 0x1FF 8780; HASWELL-NEXT: # sched: [1:0.25] 8781; HASWELL-NEXT: orw $511, (%rsi) # imm = 0x1FF 8782; HASWELL-NEXT: # sched: [7:1.00] 8783; HASWELL-NEXT: orw $7, %di # sched: [1:0.25] 8784; HASWELL-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8785; HASWELL-NEXT: orw %dx, %di # sched: [1:0.25] 8786; HASWELL-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8787; HASWELL-NEXT: orw (%rsi), %di # sched: [6:0.50] 8788; HASWELL-NEXT: #NO_APP 8789; HASWELL-NEXT: retq # sched: [7:1.00] 8790; 8791; BROADWELL-LABEL: test_or_16: 8792; BROADWELL: # %bb.0: 8793; BROADWELL-NEXT: #APP 8794; BROADWELL-NEXT: orw $511, %ax # imm = 0x1FF 8795; BROADWELL-NEXT: # sched: [1:0.25] 8796; BROADWELL-NEXT: orw $511, %di # imm = 0x1FF 8797; BROADWELL-NEXT: # sched: [1:0.25] 8798; BROADWELL-NEXT: orw $511, (%rsi) # imm = 0x1FF 8799; BROADWELL-NEXT: # sched: [7:1.00] 8800; BROADWELL-NEXT: orw $7, %di # sched: [1:0.25] 8801; BROADWELL-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8802; BROADWELL-NEXT: orw %dx, %di # sched: [1:0.25] 8803; BROADWELL-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8804; BROADWELL-NEXT: orw (%rsi), %di # sched: [6:0.50] 8805; BROADWELL-NEXT: #NO_APP 8806; BROADWELL-NEXT: retq # sched: [7:1.00] 8807; 8808; SKYLAKE-LABEL: test_or_16: 8809; SKYLAKE: # %bb.0: 8810; SKYLAKE-NEXT: #APP 8811; SKYLAKE-NEXT: orw $511, %ax # imm = 0x1FF 8812; SKYLAKE-NEXT: # sched: [1:0.25] 8813; SKYLAKE-NEXT: orw $511, %di # imm = 0x1FF 8814; SKYLAKE-NEXT: # sched: [1:0.25] 8815; SKYLAKE-NEXT: orw $511, (%rsi) # imm = 0x1FF 8816; SKYLAKE-NEXT: # sched: [7:1.00] 8817; SKYLAKE-NEXT: orw $7, %di # sched: [1:0.25] 8818; SKYLAKE-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8819; SKYLAKE-NEXT: orw %dx, %di # sched: [1:0.25] 8820; SKYLAKE-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8821; SKYLAKE-NEXT: orw (%rsi), %di # sched: [6:0.50] 8822; SKYLAKE-NEXT: #NO_APP 8823; SKYLAKE-NEXT: retq # sched: [7:1.00] 8824; 8825; SKX-LABEL: test_or_16: 8826; SKX: # %bb.0: 8827; SKX-NEXT: #APP 8828; SKX-NEXT: orw $511, %ax # imm = 0x1FF 8829; SKX-NEXT: # sched: [1:0.25] 8830; SKX-NEXT: orw $511, %di # imm = 0x1FF 8831; SKX-NEXT: # sched: [1:0.25] 8832; SKX-NEXT: orw $511, (%rsi) # imm = 0x1FF 8833; SKX-NEXT: # sched: [7:1.00] 8834; SKX-NEXT: orw $7, %di # sched: [1:0.25] 8835; SKX-NEXT: orw $7, (%rsi) # sched: [7:1.00] 8836; SKX-NEXT: orw %dx, %di # sched: [1:0.25] 8837; SKX-NEXT: orw %di, (%rsi) # sched: [7:1.00] 8838; SKX-NEXT: orw (%rsi), %di # sched: [6:0.50] 8839; SKX-NEXT: #NO_APP 8840; SKX-NEXT: retq # sched: [7:1.00] 8841; 8842; BTVER2-LABEL: test_or_16: 8843; BTVER2: # %bb.0: 8844; BTVER2-NEXT: #APP 8845; BTVER2-NEXT: orw $511, %ax # imm = 0x1FF 8846; BTVER2-NEXT: # sched: [1:0.50] 8847; BTVER2-NEXT: orw $511, %di # imm = 0x1FF 8848; BTVER2-NEXT: # sched: [1:0.50] 8849; BTVER2-NEXT: orw $511, (%rsi) # imm = 0x1FF 8850; BTVER2-NEXT: # sched: [5:1.00] 8851; BTVER2-NEXT: orw $7, %di # sched: [1:0.50] 8852; BTVER2-NEXT: orw $7, (%rsi) # sched: [5:1.00] 8853; BTVER2-NEXT: orw %dx, %di # sched: [1:0.50] 8854; BTVER2-NEXT: orw %di, (%rsi) # sched: [5:1.00] 8855; BTVER2-NEXT: orw (%rsi), %di # sched: [4:1.00] 8856; BTVER2-NEXT: #NO_APP 8857; BTVER2-NEXT: retq # sched: [4:1.00] 8858; 8859; ZNVER1-LABEL: test_or_16: 8860; ZNVER1: # %bb.0: 8861; ZNVER1-NEXT: #APP 8862; ZNVER1-NEXT: orw $511, %ax # imm = 0x1FF 8863; ZNVER1-NEXT: # sched: [1:0.25] 8864; ZNVER1-NEXT: orw $511, %di # imm = 0x1FF 8865; ZNVER1-NEXT: # sched: [1:0.25] 8866; ZNVER1-NEXT: orw $511, (%rsi) # imm = 0x1FF 8867; ZNVER1-NEXT: # sched: [5:0.50] 8868; ZNVER1-NEXT: orw $7, %di # sched: [1:0.25] 8869; ZNVER1-NEXT: orw $7, (%rsi) # sched: [5:0.50] 8870; ZNVER1-NEXT: orw %dx, %di # sched: [1:0.25] 8871; ZNVER1-NEXT: orw %di, (%rsi) # sched: [5:0.50] 8872; ZNVER1-NEXT: orw (%rsi), %di # sched: [5:0.50] 8873; ZNVER1-NEXT: #NO_APP 8874; ZNVER1-NEXT: retq # sched: [1:0.50] 8875 tail call void asm "orw $3, %AX \0A\09 orw $3, $0 \0A\09 orw $3, $2 \0A\09 orw $4, $0 \0A\09 orw $4, $2 \0A\09 orw $1, $0 \0A\09 orw $0, $2 \0A\09 orw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 8876 ret void 8877} 8878define void @test_or_32(i32 %a0, i32* %a1, i32 %a2) optsize { 8879; GENERIC-LABEL: test_or_32: 8880; GENERIC: # %bb.0: 8881; GENERIC-NEXT: #APP 8882; GENERIC-NEXT: orl $665536, %eax # imm = 0xA27C0 8883; GENERIC-NEXT: # sched: [1:0.33] 8884; GENERIC-NEXT: orl $665536, %edi # imm = 0xA27C0 8885; GENERIC-NEXT: # sched: [1:0.33] 8886; GENERIC-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8887; GENERIC-NEXT: # sched: [7:1.00] 8888; GENERIC-NEXT: orl $7, %edi # sched: [1:0.33] 8889; GENERIC-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8890; GENERIC-NEXT: orl %edx, %edi # sched: [1:0.33] 8891; GENERIC-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8892; GENERIC-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8893; GENERIC-NEXT: #NO_APP 8894; GENERIC-NEXT: retq # sched: [1:1.00] 8895; 8896; ATOM-LABEL: test_or_32: 8897; ATOM: # %bb.0: 8898; ATOM-NEXT: #APP 8899; ATOM-NEXT: orl $665536, %eax # imm = 0xA27C0 8900; ATOM-NEXT: # sched: [1:0.50] 8901; ATOM-NEXT: orl $665536, %edi # imm = 0xA27C0 8902; ATOM-NEXT: # sched: [1:0.50] 8903; ATOM-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8904; ATOM-NEXT: # sched: [1:1.00] 8905; ATOM-NEXT: orl $7, %edi # sched: [1:0.50] 8906; ATOM-NEXT: orl $7, (%rsi) # sched: [1:1.00] 8907; ATOM-NEXT: orl %edx, %edi # sched: [1:0.50] 8908; ATOM-NEXT: orl %edi, (%rsi) # sched: [1:1.00] 8909; ATOM-NEXT: orl (%rsi), %edi # sched: [1:1.00] 8910; ATOM-NEXT: #NO_APP 8911; ATOM-NEXT: retq # sched: [79:39.50] 8912; 8913; SLM-LABEL: test_or_32: 8914; SLM: # %bb.0: 8915; SLM-NEXT: #APP 8916; SLM-NEXT: orl $665536, %eax # imm = 0xA27C0 8917; SLM-NEXT: # sched: [1:0.50] 8918; SLM-NEXT: orl $665536, %edi # imm = 0xA27C0 8919; SLM-NEXT: # sched: [1:0.50] 8920; SLM-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8921; SLM-NEXT: # sched: [5:2.00] 8922; SLM-NEXT: orl $7, %edi # sched: [1:0.50] 8923; SLM-NEXT: orl $7, (%rsi) # sched: [5:2.00] 8924; SLM-NEXT: orl %edx, %edi # sched: [1:0.50] 8925; SLM-NEXT: orl %edi, (%rsi) # sched: [5:2.00] 8926; SLM-NEXT: orl (%rsi), %edi # sched: [4:1.00] 8927; SLM-NEXT: #NO_APP 8928; SLM-NEXT: retq # sched: [4:1.00] 8929; 8930; SANDY-LABEL: test_or_32: 8931; SANDY: # %bb.0: 8932; SANDY-NEXT: #APP 8933; SANDY-NEXT: orl $665536, %eax # imm = 0xA27C0 8934; SANDY-NEXT: # sched: [1:0.33] 8935; SANDY-NEXT: orl $665536, %edi # imm = 0xA27C0 8936; SANDY-NEXT: # sched: [1:0.33] 8937; SANDY-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8938; SANDY-NEXT: # sched: [7:1.00] 8939; SANDY-NEXT: orl $7, %edi # sched: [1:0.33] 8940; SANDY-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8941; SANDY-NEXT: orl %edx, %edi # sched: [1:0.33] 8942; SANDY-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8943; SANDY-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8944; SANDY-NEXT: #NO_APP 8945; SANDY-NEXT: retq # sched: [1:1.00] 8946; 8947; HASWELL-LABEL: test_or_32: 8948; HASWELL: # %bb.0: 8949; HASWELL-NEXT: #APP 8950; HASWELL-NEXT: orl $665536, %eax # imm = 0xA27C0 8951; HASWELL-NEXT: # sched: [1:0.25] 8952; HASWELL-NEXT: orl $665536, %edi # imm = 0xA27C0 8953; HASWELL-NEXT: # sched: [1:0.25] 8954; HASWELL-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8955; HASWELL-NEXT: # sched: [7:1.00] 8956; HASWELL-NEXT: orl $7, %edi # sched: [1:0.25] 8957; HASWELL-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8958; HASWELL-NEXT: orl %edx, %edi # sched: [1:0.25] 8959; HASWELL-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8960; HASWELL-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8961; HASWELL-NEXT: #NO_APP 8962; HASWELL-NEXT: retq # sched: [7:1.00] 8963; 8964; BROADWELL-LABEL: test_or_32: 8965; BROADWELL: # %bb.0: 8966; BROADWELL-NEXT: #APP 8967; BROADWELL-NEXT: orl $665536, %eax # imm = 0xA27C0 8968; BROADWELL-NEXT: # sched: [1:0.25] 8969; BROADWELL-NEXT: orl $665536, %edi # imm = 0xA27C0 8970; BROADWELL-NEXT: # sched: [1:0.25] 8971; BROADWELL-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8972; BROADWELL-NEXT: # sched: [7:1.00] 8973; BROADWELL-NEXT: orl $7, %edi # sched: [1:0.25] 8974; BROADWELL-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8975; BROADWELL-NEXT: orl %edx, %edi # sched: [1:0.25] 8976; BROADWELL-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8977; BROADWELL-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8978; BROADWELL-NEXT: #NO_APP 8979; BROADWELL-NEXT: retq # sched: [7:1.00] 8980; 8981; SKYLAKE-LABEL: test_or_32: 8982; SKYLAKE: # %bb.0: 8983; SKYLAKE-NEXT: #APP 8984; SKYLAKE-NEXT: orl $665536, %eax # imm = 0xA27C0 8985; SKYLAKE-NEXT: # sched: [1:0.25] 8986; SKYLAKE-NEXT: orl $665536, %edi # imm = 0xA27C0 8987; SKYLAKE-NEXT: # sched: [1:0.25] 8988; SKYLAKE-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 8989; SKYLAKE-NEXT: # sched: [7:1.00] 8990; SKYLAKE-NEXT: orl $7, %edi # sched: [1:0.25] 8991; SKYLAKE-NEXT: orl $7, (%rsi) # sched: [7:1.00] 8992; SKYLAKE-NEXT: orl %edx, %edi # sched: [1:0.25] 8993; SKYLAKE-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 8994; SKYLAKE-NEXT: orl (%rsi), %edi # sched: [6:0.50] 8995; SKYLAKE-NEXT: #NO_APP 8996; SKYLAKE-NEXT: retq # sched: [7:1.00] 8997; 8998; SKX-LABEL: test_or_32: 8999; SKX: # %bb.0: 9000; SKX-NEXT: #APP 9001; SKX-NEXT: orl $665536, %eax # imm = 0xA27C0 9002; SKX-NEXT: # sched: [1:0.25] 9003; SKX-NEXT: orl $665536, %edi # imm = 0xA27C0 9004; SKX-NEXT: # sched: [1:0.25] 9005; SKX-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 9006; SKX-NEXT: # sched: [7:1.00] 9007; SKX-NEXT: orl $7, %edi # sched: [1:0.25] 9008; SKX-NEXT: orl $7, (%rsi) # sched: [7:1.00] 9009; SKX-NEXT: orl %edx, %edi # sched: [1:0.25] 9010; SKX-NEXT: orl %edi, (%rsi) # sched: [7:1.00] 9011; SKX-NEXT: orl (%rsi), %edi # sched: [6:0.50] 9012; SKX-NEXT: #NO_APP 9013; SKX-NEXT: retq # sched: [7:1.00] 9014; 9015; BTVER2-LABEL: test_or_32: 9016; BTVER2: # %bb.0: 9017; BTVER2-NEXT: #APP 9018; BTVER2-NEXT: orl $665536, %eax # imm = 0xA27C0 9019; BTVER2-NEXT: # sched: [1:0.50] 9020; BTVER2-NEXT: orl $665536, %edi # imm = 0xA27C0 9021; BTVER2-NEXT: # sched: [1:0.50] 9022; BTVER2-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 9023; BTVER2-NEXT: # sched: [5:1.00] 9024; BTVER2-NEXT: orl $7, %edi # sched: [1:0.50] 9025; BTVER2-NEXT: orl $7, (%rsi) # sched: [5:1.00] 9026; BTVER2-NEXT: orl %edx, %edi # sched: [1:0.50] 9027; BTVER2-NEXT: orl %edi, (%rsi) # sched: [5:1.00] 9028; BTVER2-NEXT: orl (%rsi), %edi # sched: [4:1.00] 9029; BTVER2-NEXT: #NO_APP 9030; BTVER2-NEXT: retq # sched: [4:1.00] 9031; 9032; ZNVER1-LABEL: test_or_32: 9033; ZNVER1: # %bb.0: 9034; ZNVER1-NEXT: #APP 9035; ZNVER1-NEXT: orl $665536, %eax # imm = 0xA27C0 9036; ZNVER1-NEXT: # sched: [1:0.25] 9037; ZNVER1-NEXT: orl $665536, %edi # imm = 0xA27C0 9038; ZNVER1-NEXT: # sched: [1:0.25] 9039; ZNVER1-NEXT: orl $665536, (%rsi) # imm = 0xA27C0 9040; ZNVER1-NEXT: # sched: [5:0.50] 9041; ZNVER1-NEXT: orl $7, %edi # sched: [1:0.25] 9042; ZNVER1-NEXT: orl $7, (%rsi) # sched: [5:0.50] 9043; ZNVER1-NEXT: orl %edx, %edi # sched: [1:0.25] 9044; ZNVER1-NEXT: orl %edi, (%rsi) # sched: [5:0.50] 9045; ZNVER1-NEXT: orl (%rsi), %edi # sched: [5:0.50] 9046; ZNVER1-NEXT: #NO_APP 9047; ZNVER1-NEXT: retq # sched: [1:0.50] 9048 tail call void asm "orl $3, %EAX \0A\09 orl $3, $0 \0A\09 orl $3, $2 \0A\09 orl $4, $0 \0A\09 orl $4, $2 \0A\09 orl $1, $0 \0A\09 orl $0, $2 \0A\09 orl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 9049 ret void 9050} 9051define void @test_or_64(i64 %a0, i64* %a1, i64 %a2) optsize { 9052; GENERIC-LABEL: test_or_64: 9053; GENERIC: # %bb.0: 9054; GENERIC-NEXT: #APP 9055; GENERIC-NEXT: orq $665536, %rax # imm = 0xA27C0 9056; GENERIC-NEXT: # sched: [1:0.33] 9057; GENERIC-NEXT: orq $665536, %rdi # imm = 0xA27C0 9058; GENERIC-NEXT: # sched: [1:0.33] 9059; GENERIC-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9060; GENERIC-NEXT: # sched: [7:1.00] 9061; GENERIC-NEXT: orq $7, %rdi # sched: [1:0.33] 9062; GENERIC-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9063; GENERIC-NEXT: orq %rdx, %rdi # sched: [1:0.33] 9064; GENERIC-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9065; GENERIC-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9066; GENERIC-NEXT: #NO_APP 9067; GENERIC-NEXT: retq # sched: [1:1.00] 9068; 9069; ATOM-LABEL: test_or_64: 9070; ATOM: # %bb.0: 9071; ATOM-NEXT: #APP 9072; ATOM-NEXT: orq $665536, %rax # imm = 0xA27C0 9073; ATOM-NEXT: # sched: [1:0.50] 9074; ATOM-NEXT: orq $665536, %rdi # imm = 0xA27C0 9075; ATOM-NEXT: # sched: [1:0.50] 9076; ATOM-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9077; ATOM-NEXT: # sched: [1:1.00] 9078; ATOM-NEXT: orq $7, %rdi # sched: [1:0.50] 9079; ATOM-NEXT: orq $7, (%rsi) # sched: [1:1.00] 9080; ATOM-NEXT: orq %rdx, %rdi # sched: [1:0.50] 9081; ATOM-NEXT: orq %rdi, (%rsi) # sched: [1:1.00] 9082; ATOM-NEXT: orq (%rsi), %rdi # sched: [1:1.00] 9083; ATOM-NEXT: #NO_APP 9084; ATOM-NEXT: retq # sched: [79:39.50] 9085; 9086; SLM-LABEL: test_or_64: 9087; SLM: # %bb.0: 9088; SLM-NEXT: #APP 9089; SLM-NEXT: orq $665536, %rax # imm = 0xA27C0 9090; SLM-NEXT: # sched: [1:0.50] 9091; SLM-NEXT: orq $665536, %rdi # imm = 0xA27C0 9092; SLM-NEXT: # sched: [1:0.50] 9093; SLM-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9094; SLM-NEXT: # sched: [5:2.00] 9095; SLM-NEXT: orq $7, %rdi # sched: [1:0.50] 9096; SLM-NEXT: orq $7, (%rsi) # sched: [5:2.00] 9097; SLM-NEXT: orq %rdx, %rdi # sched: [1:0.50] 9098; SLM-NEXT: orq %rdi, (%rsi) # sched: [5:2.00] 9099; SLM-NEXT: orq (%rsi), %rdi # sched: [4:1.00] 9100; SLM-NEXT: #NO_APP 9101; SLM-NEXT: retq # sched: [4:1.00] 9102; 9103; SANDY-LABEL: test_or_64: 9104; SANDY: # %bb.0: 9105; SANDY-NEXT: #APP 9106; SANDY-NEXT: orq $665536, %rax # imm = 0xA27C0 9107; SANDY-NEXT: # sched: [1:0.33] 9108; SANDY-NEXT: orq $665536, %rdi # imm = 0xA27C0 9109; SANDY-NEXT: # sched: [1:0.33] 9110; SANDY-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9111; SANDY-NEXT: # sched: [7:1.00] 9112; SANDY-NEXT: orq $7, %rdi # sched: [1:0.33] 9113; SANDY-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9114; SANDY-NEXT: orq %rdx, %rdi # sched: [1:0.33] 9115; SANDY-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9116; SANDY-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9117; SANDY-NEXT: #NO_APP 9118; SANDY-NEXT: retq # sched: [1:1.00] 9119; 9120; HASWELL-LABEL: test_or_64: 9121; HASWELL: # %bb.0: 9122; HASWELL-NEXT: #APP 9123; HASWELL-NEXT: orq $665536, %rax # imm = 0xA27C0 9124; HASWELL-NEXT: # sched: [1:0.25] 9125; HASWELL-NEXT: orq $665536, %rdi # imm = 0xA27C0 9126; HASWELL-NEXT: # sched: [1:0.25] 9127; HASWELL-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9128; HASWELL-NEXT: # sched: [7:1.00] 9129; HASWELL-NEXT: orq $7, %rdi # sched: [1:0.25] 9130; HASWELL-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9131; HASWELL-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9132; HASWELL-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9133; HASWELL-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9134; HASWELL-NEXT: #NO_APP 9135; HASWELL-NEXT: retq # sched: [7:1.00] 9136; 9137; BROADWELL-LABEL: test_or_64: 9138; BROADWELL: # %bb.0: 9139; BROADWELL-NEXT: #APP 9140; BROADWELL-NEXT: orq $665536, %rax # imm = 0xA27C0 9141; BROADWELL-NEXT: # sched: [1:0.25] 9142; BROADWELL-NEXT: orq $665536, %rdi # imm = 0xA27C0 9143; BROADWELL-NEXT: # sched: [1:0.25] 9144; BROADWELL-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9145; BROADWELL-NEXT: # sched: [7:1.00] 9146; BROADWELL-NEXT: orq $7, %rdi # sched: [1:0.25] 9147; BROADWELL-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9148; BROADWELL-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9149; BROADWELL-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9150; BROADWELL-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9151; BROADWELL-NEXT: #NO_APP 9152; BROADWELL-NEXT: retq # sched: [7:1.00] 9153; 9154; SKYLAKE-LABEL: test_or_64: 9155; SKYLAKE: # %bb.0: 9156; SKYLAKE-NEXT: #APP 9157; SKYLAKE-NEXT: orq $665536, %rax # imm = 0xA27C0 9158; SKYLAKE-NEXT: # sched: [1:0.25] 9159; SKYLAKE-NEXT: orq $665536, %rdi # imm = 0xA27C0 9160; SKYLAKE-NEXT: # sched: [1:0.25] 9161; SKYLAKE-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9162; SKYLAKE-NEXT: # sched: [7:1.00] 9163; SKYLAKE-NEXT: orq $7, %rdi # sched: [1:0.25] 9164; SKYLAKE-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9165; SKYLAKE-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9166; SKYLAKE-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9167; SKYLAKE-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9168; SKYLAKE-NEXT: #NO_APP 9169; SKYLAKE-NEXT: retq # sched: [7:1.00] 9170; 9171; SKX-LABEL: test_or_64: 9172; SKX: # %bb.0: 9173; SKX-NEXT: #APP 9174; SKX-NEXT: orq $665536, %rax # imm = 0xA27C0 9175; SKX-NEXT: # sched: [1:0.25] 9176; SKX-NEXT: orq $665536, %rdi # imm = 0xA27C0 9177; SKX-NEXT: # sched: [1:0.25] 9178; SKX-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9179; SKX-NEXT: # sched: [7:1.00] 9180; SKX-NEXT: orq $7, %rdi # sched: [1:0.25] 9181; SKX-NEXT: orq $7, (%rsi) # sched: [7:1.00] 9182; SKX-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9183; SKX-NEXT: orq %rdi, (%rsi) # sched: [7:1.00] 9184; SKX-NEXT: orq (%rsi), %rdi # sched: [6:0.50] 9185; SKX-NEXT: #NO_APP 9186; SKX-NEXT: retq # sched: [7:1.00] 9187; 9188; BTVER2-LABEL: test_or_64: 9189; BTVER2: # %bb.0: 9190; BTVER2-NEXT: #APP 9191; BTVER2-NEXT: orq $665536, %rax # imm = 0xA27C0 9192; BTVER2-NEXT: # sched: [1:0.50] 9193; BTVER2-NEXT: orq $665536, %rdi # imm = 0xA27C0 9194; BTVER2-NEXT: # sched: [1:0.50] 9195; BTVER2-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9196; BTVER2-NEXT: # sched: [5:1.00] 9197; BTVER2-NEXT: orq $7, %rdi # sched: [1:0.50] 9198; BTVER2-NEXT: orq $7, (%rsi) # sched: [5:1.00] 9199; BTVER2-NEXT: orq %rdx, %rdi # sched: [1:0.50] 9200; BTVER2-NEXT: orq %rdi, (%rsi) # sched: [5:1.00] 9201; BTVER2-NEXT: orq (%rsi), %rdi # sched: [4:1.00] 9202; BTVER2-NEXT: #NO_APP 9203; BTVER2-NEXT: retq # sched: [4:1.00] 9204; 9205; ZNVER1-LABEL: test_or_64: 9206; ZNVER1: # %bb.0: 9207; ZNVER1-NEXT: #APP 9208; ZNVER1-NEXT: orq $665536, %rax # imm = 0xA27C0 9209; ZNVER1-NEXT: # sched: [1:0.25] 9210; ZNVER1-NEXT: orq $665536, %rdi # imm = 0xA27C0 9211; ZNVER1-NEXT: # sched: [1:0.25] 9212; ZNVER1-NEXT: orq $665536, (%rsi) # imm = 0xA27C0 9213; ZNVER1-NEXT: # sched: [5:0.50] 9214; ZNVER1-NEXT: orq $7, %rdi # sched: [1:0.25] 9215; ZNVER1-NEXT: orq $7, (%rsi) # sched: [5:0.50] 9216; ZNVER1-NEXT: orq %rdx, %rdi # sched: [1:0.25] 9217; ZNVER1-NEXT: orq %rdi, (%rsi) # sched: [5:0.50] 9218; ZNVER1-NEXT: orq (%rsi), %rdi # sched: [5:0.50] 9219; ZNVER1-NEXT: #NO_APP 9220; ZNVER1-NEXT: retq # sched: [1:0.50] 9221 tail call void asm "orq $3, %RAX \0A\09 orq $3, $0 \0A\09 orq $3, $2 \0A\09 orq $4, $0 \0A\09 orq $4, $2 \0A\09 orq $1, $0 \0A\09 orq $0, $2 \0A\09 orq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 9222 ret void 9223} 9224 9225define void @test_out() optsize { 9226; GENERIC-LABEL: test_out: 9227; GENERIC: # %bb.0: 9228; GENERIC-NEXT: #APP 9229; GENERIC-NEXT: outb %al, $7 # sched: [100:0.33] 9230; GENERIC-NEXT: outw %ax, $7 # sched: [100:0.33] 9231; GENERIC-NEXT: outl %eax, $7 # sched: [100:0.33] 9232; GENERIC-NEXT: outb %al, %dx # sched: [100:0.33] 9233; GENERIC-NEXT: outw %ax, %dx # sched: [100:0.33] 9234; GENERIC-NEXT: outl %eax, %dx # sched: [100:0.33] 9235; GENERIC-NEXT: #NO_APP 9236; GENERIC-NEXT: retq # sched: [1:1.00] 9237; 9238; ATOM-LABEL: test_out: 9239; ATOM: # %bb.0: 9240; ATOM-NEXT: #APP 9241; ATOM-NEXT: outb %al, $7 # sched: [72:36.00] 9242; ATOM-NEXT: outw %ax, $7 # sched: [72:36.00] 9243; ATOM-NEXT: outl %eax, $7 # sched: [72:36.00] 9244; ATOM-NEXT: outb %al, %dx # sched: [68:34.00] 9245; ATOM-NEXT: outw %ax, %dx # sched: [68:34.00] 9246; ATOM-NEXT: outl %eax, %dx # sched: [68:34.00] 9247; ATOM-NEXT: #NO_APP 9248; ATOM-NEXT: retq # sched: [79:39.50] 9249; 9250; SLM-LABEL: test_out: 9251; SLM: # %bb.0: 9252; SLM-NEXT: #APP 9253; SLM-NEXT: outb %al, $7 # sched: [100:1.00] 9254; SLM-NEXT: outw %ax, $7 # sched: [100:1.00] 9255; SLM-NEXT: outl %eax, $7 # sched: [100:1.00] 9256; SLM-NEXT: outb %al, %dx # sched: [100:1.00] 9257; SLM-NEXT: outw %ax, %dx # sched: [100:1.00] 9258; SLM-NEXT: outl %eax, %dx # sched: [100:1.00] 9259; SLM-NEXT: #NO_APP 9260; SLM-NEXT: retq # sched: [4:1.00] 9261; 9262; SANDY-LABEL: test_out: 9263; SANDY: # %bb.0: 9264; SANDY-NEXT: #APP 9265; SANDY-NEXT: outb %al, $7 # sched: [100:0.33] 9266; SANDY-NEXT: outw %ax, $7 # sched: [100:0.33] 9267; SANDY-NEXT: outl %eax, $7 # sched: [100:0.33] 9268; SANDY-NEXT: outb %al, %dx # sched: [100:0.33] 9269; SANDY-NEXT: outw %ax, %dx # sched: [100:0.33] 9270; SANDY-NEXT: outl %eax, %dx # sched: [100:0.33] 9271; SANDY-NEXT: #NO_APP 9272; SANDY-NEXT: retq # sched: [1:1.00] 9273; 9274; HASWELL-LABEL: test_out: 9275; HASWELL: # %bb.0: 9276; HASWELL-NEXT: #APP 9277; HASWELL-NEXT: outb %al, $7 # sched: [36:5.00] 9278; HASWELL-NEXT: outw %ax, $7 # sched: [36:5.00] 9279; HASWELL-NEXT: outl %eax, $7 # sched: [36:5.00] 9280; HASWELL-NEXT: outb %al, %dx # sched: [36:5.00] 9281; HASWELL-NEXT: outw %ax, %dx # sched: [36:5.00] 9282; HASWELL-NEXT: outl %eax, %dx # sched: [36:5.00] 9283; HASWELL-NEXT: #NO_APP 9284; HASWELL-NEXT: retq # sched: [7:1.00] 9285; 9286; BROADWELL-LABEL: test_out: 9287; BROADWELL: # %bb.0: 9288; BROADWELL-NEXT: #APP 9289; BROADWELL-NEXT: outb %al, $7 # sched: [35:5.00] 9290; BROADWELL-NEXT: outw %ax, $7 # sched: [35:5.00] 9291; BROADWELL-NEXT: outl %eax, $7 # sched: [35:5.00] 9292; BROADWELL-NEXT: outb %al, %dx # sched: [35:5.00] 9293; BROADWELL-NEXT: outw %ax, %dx # sched: [35:5.00] 9294; BROADWELL-NEXT: outl %eax, %dx # sched: [35:5.00] 9295; BROADWELL-NEXT: #NO_APP 9296; BROADWELL-NEXT: retq # sched: [7:1.00] 9297; 9298; SKYLAKE-LABEL: test_out: 9299; SKYLAKE: # %bb.0: 9300; SKYLAKE-NEXT: #APP 9301; SKYLAKE-NEXT: outb %al, $7 # sched: [35:5.00] 9302; SKYLAKE-NEXT: outw %ax, $7 # sched: [35:5.00] 9303; SKYLAKE-NEXT: outl %eax, $7 # sched: [35:5.00] 9304; SKYLAKE-NEXT: outb %al, %dx # sched: [35:5.00] 9305; SKYLAKE-NEXT: outw %ax, %dx # sched: [35:5.00] 9306; SKYLAKE-NEXT: outl %eax, %dx # sched: [35:5.00] 9307; SKYLAKE-NEXT: #NO_APP 9308; SKYLAKE-NEXT: retq # sched: [7:1.00] 9309; 9310; SKX-LABEL: test_out: 9311; SKX: # %bb.0: 9312; SKX-NEXT: #APP 9313; SKX-NEXT: outb %al, $7 # sched: [35:5.00] 9314; SKX-NEXT: outw %ax, $7 # sched: [35:5.00] 9315; SKX-NEXT: outl %eax, $7 # sched: [35:5.00] 9316; SKX-NEXT: outb %al, %dx # sched: [35:5.00] 9317; SKX-NEXT: outw %ax, %dx # sched: [35:5.00] 9318; SKX-NEXT: outl %eax, %dx # sched: [35:5.00] 9319; SKX-NEXT: #NO_APP 9320; SKX-NEXT: retq # sched: [7:1.00] 9321; 9322; BTVER2-LABEL: test_out: 9323; BTVER2: # %bb.0: 9324; BTVER2-NEXT: #APP 9325; BTVER2-NEXT: outb %al, $7 # sched: [100:0.50] 9326; BTVER2-NEXT: outw %ax, $7 # sched: [100:0.50] 9327; BTVER2-NEXT: outl %eax, $7 # sched: [100:0.50] 9328; BTVER2-NEXT: outb %al, %dx # sched: [100:0.50] 9329; BTVER2-NEXT: outw %ax, %dx # sched: [100:0.50] 9330; BTVER2-NEXT: outl %eax, %dx # sched: [100:0.50] 9331; BTVER2-NEXT: #NO_APP 9332; BTVER2-NEXT: retq # sched: [4:1.00] 9333; 9334; ZNVER1-LABEL: test_out: 9335; ZNVER1: # %bb.0: 9336; ZNVER1-NEXT: #APP 9337; ZNVER1-NEXT: outb %al, $7 # sched: [100:0.25] 9338; ZNVER1-NEXT: outw %ax, $7 # sched: [100:0.25] 9339; ZNVER1-NEXT: outl %eax, $7 # sched: [100:0.25] 9340; ZNVER1-NEXT: outb %al, %dx # sched: [100:0.25] 9341; ZNVER1-NEXT: outw %ax, %dx # sched: [100:0.25] 9342; ZNVER1-NEXT: outl %eax, %dx # sched: [100:0.25] 9343; ZNVER1-NEXT: #NO_APP 9344; ZNVER1-NEXT: retq # sched: [1:0.50] 9345 tail call void asm "outb %AL, $0 \0A\09 outw %AX, $0 \0A\09 outl %EAX, $0 \0A\09 outb %AL, %DX \0A\09 outw %AX, %DX \0A\09 outl %EAX, %DX", "i"(i8 7) nounwind 9346 ret void 9347} 9348 9349define void @test_outs() optsize { 9350; GENERIC-LABEL: test_outs: 9351; GENERIC: # %bb.0: 9352; GENERIC-NEXT: #APP 9353; GENERIC-NEXT: outsb (%rsi), %dx # sched: [100:0.33] 9354; GENERIC-NEXT: outsw (%rsi), %dx # sched: [100:0.33] 9355; GENERIC-NEXT: outsl (%rsi), %dx # sched: [100:0.33] 9356; GENERIC-NEXT: #NO_APP 9357; GENERIC-NEXT: retq # sched: [1:1.00] 9358; 9359; ATOM-LABEL: test_outs: 9360; ATOM: # %bb.0: 9361; ATOM-NEXT: #APP 9362; ATOM-NEXT: outsb (%rsi), %dx # sched: [74:37.00] 9363; ATOM-NEXT: outsw (%rsi), %dx # sched: [74:37.00] 9364; ATOM-NEXT: outsl (%rsi), %dx # sched: [74:37.00] 9365; ATOM-NEXT: #NO_APP 9366; ATOM-NEXT: retq # sched: [79:39.50] 9367; 9368; SLM-LABEL: test_outs: 9369; SLM: # %bb.0: 9370; SLM-NEXT: #APP 9371; SLM-NEXT: outsb (%rsi), %dx # sched: [100:1.00] 9372; SLM-NEXT: outsw (%rsi), %dx # sched: [100:1.00] 9373; SLM-NEXT: outsl (%rsi), %dx # sched: [100:1.00] 9374; SLM-NEXT: #NO_APP 9375; SLM-NEXT: retq # sched: [4:1.00] 9376; 9377; SANDY-LABEL: test_outs: 9378; SANDY: # %bb.0: 9379; SANDY-NEXT: #APP 9380; SANDY-NEXT: outsb (%rsi), %dx # sched: [100:0.33] 9381; SANDY-NEXT: outsw (%rsi), %dx # sched: [100:0.33] 9382; SANDY-NEXT: outsl (%rsi), %dx # sched: [100:0.33] 9383; SANDY-NEXT: #NO_APP 9384; SANDY-NEXT: retq # sched: [1:1.00] 9385; 9386; HASWELL-LABEL: test_outs: 9387; HASWELL: # %bb.0: 9388; HASWELL-NEXT: #APP 9389; HASWELL-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9390; HASWELL-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9391; HASWELL-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9392; HASWELL-NEXT: #NO_APP 9393; HASWELL-NEXT: retq # sched: [7:1.00] 9394; 9395; BROADWELL-LABEL: test_outs: 9396; BROADWELL: # %bb.0: 9397; BROADWELL-NEXT: #APP 9398; BROADWELL-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9399; BROADWELL-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9400; BROADWELL-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9401; BROADWELL-NEXT: #NO_APP 9402; BROADWELL-NEXT: retq # sched: [7:1.00] 9403; 9404; SKYLAKE-LABEL: test_outs: 9405; SKYLAKE: # %bb.0: 9406; SKYLAKE-NEXT: #APP 9407; SKYLAKE-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9408; SKYLAKE-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9409; SKYLAKE-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9410; SKYLAKE-NEXT: #NO_APP 9411; SKYLAKE-NEXT: retq # sched: [7:1.00] 9412; 9413; SKX-LABEL: test_outs: 9414; SKX: # %bb.0: 9415; SKX-NEXT: #APP 9416; SKX-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9417; SKX-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9418; SKX-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9419; SKX-NEXT: #NO_APP 9420; SKX-NEXT: retq # sched: [7:1.00] 9421; 9422; BTVER2-LABEL: test_outs: 9423; BTVER2: # %bb.0: 9424; BTVER2-NEXT: #APP 9425; BTVER2-NEXT: outsb (%rsi), %dx # sched: [100:0.50] 9426; BTVER2-NEXT: outsw (%rsi), %dx # sched: [100:0.50] 9427; BTVER2-NEXT: outsl (%rsi), %dx # sched: [100:0.50] 9428; BTVER2-NEXT: #NO_APP 9429; BTVER2-NEXT: retq # sched: [4:1.00] 9430; 9431; ZNVER1-LABEL: test_outs: 9432; ZNVER1: # %bb.0: 9433; ZNVER1-NEXT: #APP 9434; ZNVER1-NEXT: outsb (%rsi), %dx # sched: [100:0.25] 9435; ZNVER1-NEXT: outsw (%rsi), %dx # sched: [100:0.25] 9436; ZNVER1-NEXT: outsl (%rsi), %dx # sched: [100:0.25] 9437; ZNVER1-NEXT: #NO_APP 9438; ZNVER1-NEXT: retq # sched: [1:0.50] 9439 call void asm sideeffect "outsb \0A\09 outsw \0A\09 outsl", ""() 9440 ret void 9441} 9442 9443define void @test_pause() optsize { 9444; GENERIC-LABEL: test_pause: 9445; GENERIC: # %bb.0: 9446; GENERIC-NEXT: #APP 9447; GENERIC-NEXT: pause # sched: [4:1.33] 9448; GENERIC-NEXT: #NO_APP 9449; GENERIC-NEXT: retq # sched: [1:1.00] 9450; 9451; ATOM-LABEL: test_pause: 9452; ATOM: # %bb.0: 9453; ATOM-NEXT: #APP 9454; ATOM-NEXT: pause # sched: [17:8.50] 9455; ATOM-NEXT: #NO_APP 9456; ATOM-NEXT: retq # sched: [79:39.50] 9457; 9458; SLM-LABEL: test_pause: 9459; SLM: # %bb.0: 9460; SLM-NEXT: #APP 9461; SLM-NEXT: pause # sched: [1:0.50] 9462; SLM-NEXT: #NO_APP 9463; SLM-NEXT: retq # sched: [4:1.00] 9464; 9465; SANDY-LABEL: test_pause: 9466; SANDY: # %bb.0: 9467; SANDY-NEXT: #APP 9468; SANDY-NEXT: pause # sched: [4:1.33] 9469; SANDY-NEXT: #NO_APP 9470; SANDY-NEXT: retq # sched: [1:1.00] 9471; 9472; HASWELL-LABEL: test_pause: 9473; HASWELL: # %bb.0: 9474; HASWELL-NEXT: #APP 9475; HASWELL-NEXT: pause # sched: [5:1.25] 9476; HASWELL-NEXT: #NO_APP 9477; HASWELL-NEXT: retq # sched: [7:1.00] 9478; 9479; BROADWELL-LABEL: test_pause: 9480; BROADWELL: # %bb.0: 9481; BROADWELL-NEXT: #APP 9482; BROADWELL-NEXT: pause # sched: [5:1.25] 9483; BROADWELL-NEXT: #NO_APP 9484; BROADWELL-NEXT: retq # sched: [7:1.00] 9485; 9486; SKYLAKE-LABEL: test_pause: 9487; SKYLAKE: # %bb.0: 9488; SKYLAKE-NEXT: #APP 9489; SKYLAKE-NEXT: pause # sched: [4:1.00] 9490; SKYLAKE-NEXT: #NO_APP 9491; SKYLAKE-NEXT: retq # sched: [7:1.00] 9492; 9493; SKX-LABEL: test_pause: 9494; SKX: # %bb.0: 9495; SKX-NEXT: #APP 9496; SKX-NEXT: pause # sched: [140:1.00] 9497; SKX-NEXT: #NO_APP 9498; SKX-NEXT: retq # sched: [7:1.00] 9499; 9500; BTVER2-LABEL: test_pause: 9501; BTVER2: # %bb.0: 9502; BTVER2-NEXT: #APP 9503; BTVER2-NEXT: pause # sched: [1:0.50] 9504; BTVER2-NEXT: #NO_APP 9505; BTVER2-NEXT: retq # sched: [4:1.00] 9506; 9507; ZNVER1-LABEL: test_pause: 9508; ZNVER1: # %bb.0: 9509; ZNVER1-NEXT: #APP 9510; ZNVER1-NEXT: pause # sched: [100:0.25] 9511; ZNVER1-NEXT: #NO_APP 9512; ZNVER1-NEXT: retq # sched: [1:0.50] 9513 call void asm sideeffect "pause", ""() 9514 ret void 9515} 9516 9517define void @test_pop_push() optsize { 9518; GENERIC-LABEL: test_pop_push: 9519; GENERIC: # %bb.0: 9520; GENERIC-NEXT: #APP 9521; GENERIC-NEXT: popq %fs # sched: [100:0.33] 9522; GENERIC-NEXT: popq %gs # sched: [100:0.33] 9523; GENERIC-NEXT: pushq %fs # sched: [3:1.00] 9524; GENERIC-NEXT: pushq %gs # sched: [5:1.00] 9525; GENERIC-NEXT: #NO_APP 9526; GENERIC-NEXT: retq # sched: [1:1.00] 9527; 9528; ATOM-LABEL: test_pop_push: 9529; ATOM: # %bb.0: 9530; ATOM-NEXT: #APP 9531; ATOM-NEXT: popq %fs # sched: [29:14.50] 9532; ATOM-NEXT: popq %gs # sched: [29:14.50] 9533; ATOM-NEXT: pushq %fs # sched: [2:1.00] 9534; ATOM-NEXT: pushq %gs # sched: [2:1.00] 9535; ATOM-NEXT: #NO_APP 9536; ATOM-NEXT: retq # sched: [79:39.50] 9537; 9538; SLM-LABEL: test_pop_push: 9539; SLM: # %bb.0: 9540; SLM-NEXT: #APP 9541; SLM-NEXT: popq %fs # sched: [100:1.00] 9542; SLM-NEXT: popq %gs # sched: [100:1.00] 9543; SLM-NEXT: pushq %fs # sched: [100:1.00] 9544; SLM-NEXT: pushq %gs # sched: [100:1.00] 9545; SLM-NEXT: #NO_APP 9546; SLM-NEXT: retq # sched: [4:1.00] 9547; 9548; SANDY-LABEL: test_pop_push: 9549; SANDY: # %bb.0: 9550; SANDY-NEXT: #APP 9551; SANDY-NEXT: popq %fs # sched: [100:0.33] 9552; SANDY-NEXT: popq %gs # sched: [100:0.33] 9553; SANDY-NEXT: pushq %fs # sched: [3:1.00] 9554; SANDY-NEXT: pushq %gs # sched: [5:1.00] 9555; SANDY-NEXT: #NO_APP 9556; SANDY-NEXT: retq # sched: [1:1.00] 9557; 9558; HASWELL-LABEL: test_pop_push: 9559; HASWELL: # %bb.0: 9560; HASWELL-NEXT: #APP 9561; HASWELL-NEXT: popq %fs # sched: [100:0.25] 9562; HASWELL-NEXT: popq %gs # sched: [100:0.25] 9563; HASWELL-NEXT: pushq %fs # sched: [100:0.25] 9564; HASWELL-NEXT: pushq %gs # sched: [100:0.25] 9565; HASWELL-NEXT: #NO_APP 9566; HASWELL-NEXT: retq # sched: [7:1.00] 9567; 9568; BROADWELL-LABEL: test_pop_push: 9569; BROADWELL: # %bb.0: 9570; BROADWELL-NEXT: #APP 9571; BROADWELL-NEXT: popq %fs # sched: [100:0.25] 9572; BROADWELL-NEXT: popq %gs # sched: [100:0.25] 9573; BROADWELL-NEXT: pushq %fs # sched: [100:0.25] 9574; BROADWELL-NEXT: pushq %gs # sched: [100:0.25] 9575; BROADWELL-NEXT: #NO_APP 9576; BROADWELL-NEXT: retq # sched: [7:1.00] 9577; 9578; SKYLAKE-LABEL: test_pop_push: 9579; SKYLAKE: # %bb.0: 9580; SKYLAKE-NEXT: #APP 9581; SKYLAKE-NEXT: popq %fs # sched: [100:0.25] 9582; SKYLAKE-NEXT: popq %gs # sched: [100:0.25] 9583; SKYLAKE-NEXT: pushq %fs # sched: [100:0.25] 9584; SKYLAKE-NEXT: pushq %gs # sched: [100:0.25] 9585; SKYLAKE-NEXT: #NO_APP 9586; SKYLAKE-NEXT: retq # sched: [7:1.00] 9587; 9588; SKX-LABEL: test_pop_push: 9589; SKX: # %bb.0: 9590; SKX-NEXT: #APP 9591; SKX-NEXT: popq %fs # sched: [100:0.25] 9592; SKX-NEXT: popq %gs # sched: [100:0.25] 9593; SKX-NEXT: pushq %fs # sched: [100:0.25] 9594; SKX-NEXT: pushq %gs # sched: [100:0.25] 9595; SKX-NEXT: #NO_APP 9596; SKX-NEXT: retq # sched: [7:1.00] 9597; 9598; BTVER2-LABEL: test_pop_push: 9599; BTVER2: # %bb.0: 9600; BTVER2-NEXT: #APP 9601; BTVER2-NEXT: popq %fs # sched: [100:0.50] 9602; BTVER2-NEXT: popq %gs # sched: [100:0.50] 9603; BTVER2-NEXT: pushq %fs # sched: [100:0.50] 9604; BTVER2-NEXT: pushq %gs # sched: [100:0.50] 9605; BTVER2-NEXT: #NO_APP 9606; BTVER2-NEXT: retq # sched: [4:1.00] 9607; 9608; ZNVER1-LABEL: test_pop_push: 9609; ZNVER1: # %bb.0: 9610; ZNVER1-NEXT: #APP 9611; ZNVER1-NEXT: popq %fs # sched: [100:0.25] 9612; ZNVER1-NEXT: popq %gs # sched: [100:0.25] 9613; ZNVER1-NEXT: pushq %fs # sched: [100:0.25] 9614; ZNVER1-NEXT: pushq %gs # sched: [100:0.25] 9615; ZNVER1-NEXT: #NO_APP 9616; ZNVER1-NEXT: retq # sched: [1:0.50] 9617 call void asm sideeffect "pop %FS \0A\09 pop %GS \0A\09 push %FS \0A\09 push %GS", ""() 9618 ret void 9619} 9620define i16 @test_pop_push_16(i16 %a0, i16 *%a1) optsize { 9621; GENERIC-LABEL: test_pop_push_16: 9622; GENERIC: # %bb.0: 9623; GENERIC-NEXT: #APP 9624; GENERIC-NEXT: popw %ax # sched: [6:0.50] 9625; GENERIC-NEXT: popw (%rsi) # sched: [6:0.50] 9626; GENERIC-NEXT: pushw %di # sched: [5:1.00] 9627; GENERIC-NEXT: pushw (%rsi) # sched: [5:1.00] 9628; GENERIC-NEXT: pushw $4095 # imm = 0xFFF 9629; GENERIC-NEXT: # sched: [1:1.00] 9630; GENERIC-NEXT: pushw $7 # sched: [1:1.00] 9631; GENERIC-NEXT: #NO_APP 9632; GENERIC-NEXT: retq # sched: [1:1.00] 9633; 9634; ATOM-LABEL: test_pop_push_16: 9635; ATOM: # %bb.0: 9636; ATOM-NEXT: #APP 9637; ATOM-NEXT: popw %ax # sched: [2:1.00] 9638; ATOM-NEXT: popw (%rsi) # sched: [3:1.50] 9639; ATOM-NEXT: pushw %di # sched: [1:1.00] 9640; ATOM-NEXT: pushw (%rsi) # sched: [2:1.00] 9641; ATOM-NEXT: pushw $4095 # imm = 0xFFF 9642; ATOM-NEXT: # sched: [1:1.00] 9643; ATOM-NEXT: pushw $7 # sched: [1:1.00] 9644; ATOM-NEXT: #NO_APP 9645; ATOM-NEXT: retq # sched: [79:39.50] 9646; 9647; SLM-LABEL: test_pop_push_16: 9648; SLM: # %bb.0: 9649; SLM-NEXT: #APP 9650; SLM-NEXT: popw %ax # sched: [3:1.00] 9651; SLM-NEXT: popw (%rsi) # sched: [1:1.00] 9652; SLM-NEXT: pushw %di # sched: [1:1.00] 9653; SLM-NEXT: pushw (%rsi) # sched: [1:1.00] 9654; SLM-NEXT: pushw $4095 # imm = 0xFFF 9655; SLM-NEXT: # sched: [1:1.00] 9656; SLM-NEXT: pushw $7 # sched: [1:1.00] 9657; SLM-NEXT: #NO_APP 9658; SLM-NEXT: retq # sched: [4:1.00] 9659; 9660; SANDY-LABEL: test_pop_push_16: 9661; SANDY: # %bb.0: 9662; SANDY-NEXT: #APP 9663; SANDY-NEXT: popw %ax # sched: [6:0.50] 9664; SANDY-NEXT: popw (%rsi) # sched: [6:0.50] 9665; SANDY-NEXT: pushw %di # sched: [5:1.00] 9666; SANDY-NEXT: pushw (%rsi) # sched: [5:1.00] 9667; SANDY-NEXT: pushw $4095 # imm = 0xFFF 9668; SANDY-NEXT: # sched: [1:1.00] 9669; SANDY-NEXT: pushw $7 # sched: [1:1.00] 9670; SANDY-NEXT: #NO_APP 9671; SANDY-NEXT: retq # sched: [1:1.00] 9672; 9673; HASWELL-LABEL: test_pop_push_16: 9674; HASWELL: # %bb.0: 9675; HASWELL-NEXT: #APP 9676; HASWELL-NEXT: popw %ax # sched: [6:0.50] 9677; HASWELL-NEXT: popw (%rsi) # sched: [7:1.00] 9678; HASWELL-NEXT: pushw %di # sched: [2:1.00] 9679; HASWELL-NEXT: pushw (%rsi) # sched: [7:1.00] 9680; HASWELL-NEXT: pushw $4095 # imm = 0xFFF 9681; HASWELL-NEXT: # sched: [1:1.00] 9682; HASWELL-NEXT: pushw $7 # sched: [1:1.00] 9683; HASWELL-NEXT: #NO_APP 9684; HASWELL-NEXT: retq # sched: [7:1.00] 9685; 9686; BROADWELL-LABEL: test_pop_push_16: 9687; BROADWELL: # %bb.0: 9688; BROADWELL-NEXT: #APP 9689; BROADWELL-NEXT: popw %ax # sched: [6:0.50] 9690; BROADWELL-NEXT: popw (%rsi) # sched: [6:1.00] 9691; BROADWELL-NEXT: pushw %di # sched: [2:1.00] 9692; BROADWELL-NEXT: pushw (%rsi) # sched: [6:1.00] 9693; BROADWELL-NEXT: pushw $4095 # imm = 0xFFF 9694; BROADWELL-NEXT: # sched: [1:1.00] 9695; BROADWELL-NEXT: pushw $7 # sched: [1:1.00] 9696; BROADWELL-NEXT: #NO_APP 9697; BROADWELL-NEXT: retq # sched: [7:1.00] 9698; 9699; SKYLAKE-LABEL: test_pop_push_16: 9700; SKYLAKE: # %bb.0: 9701; SKYLAKE-NEXT: #APP 9702; SKYLAKE-NEXT: popw %ax # sched: [6:0.50] 9703; SKYLAKE-NEXT: popw (%rsi) # sched: [6:1.00] 9704; SKYLAKE-NEXT: pushw %di # sched: [2:1.00] 9705; SKYLAKE-NEXT: pushw (%rsi) # sched: [6:1.00] 9706; SKYLAKE-NEXT: pushw $4095 # imm = 0xFFF 9707; SKYLAKE-NEXT: # sched: [1:1.00] 9708; SKYLAKE-NEXT: pushw $7 # sched: [1:1.00] 9709; SKYLAKE-NEXT: #NO_APP 9710; SKYLAKE-NEXT: retq # sched: [7:1.00] 9711; 9712; SKX-LABEL: test_pop_push_16: 9713; SKX: # %bb.0: 9714; SKX-NEXT: #APP 9715; SKX-NEXT: popw %ax # sched: [6:0.50] 9716; SKX-NEXT: popw (%rsi) # sched: [6:1.00] 9717; SKX-NEXT: pushw %di # sched: [2:1.00] 9718; SKX-NEXT: pushw (%rsi) # sched: [6:1.00] 9719; SKX-NEXT: pushw $4095 # imm = 0xFFF 9720; SKX-NEXT: # sched: [1:1.00] 9721; SKX-NEXT: pushw $7 # sched: [1:1.00] 9722; SKX-NEXT: #NO_APP 9723; SKX-NEXT: retq # sched: [7:1.00] 9724; 9725; BTVER2-LABEL: test_pop_push_16: 9726; BTVER2: # %bb.0: 9727; BTVER2-NEXT: #APP 9728; BTVER2-NEXT: popw %ax # sched: [5:1.00] 9729; BTVER2-NEXT: popw (%rsi) # sched: [1:1.00] 9730; BTVER2-NEXT: pushw %di # sched: [1:1.00] 9731; BTVER2-NEXT: pushw (%rsi) # sched: [1:1.00] 9732; BTVER2-NEXT: pushw $4095 # imm = 0xFFF 9733; BTVER2-NEXT: # sched: [1:1.00] 9734; BTVER2-NEXT: pushw $7 # sched: [1:1.00] 9735; BTVER2-NEXT: #NO_APP 9736; BTVER2-NEXT: retq # sched: [4:1.00] 9737; 9738; ZNVER1-LABEL: test_pop_push_16: 9739; ZNVER1: # %bb.0: 9740; ZNVER1-NEXT: #APP 9741; ZNVER1-NEXT: popw %ax # sched: [8:0.50] 9742; ZNVER1-NEXT: popw (%rsi) # sched: [5:0.50] 9743; ZNVER1-NEXT: pushw %di # sched: [1:0.50] 9744; ZNVER1-NEXT: pushw (%rsi) # sched: [4:0.50] 9745; ZNVER1-NEXT: pushw $4095 # imm = 0xFFF 9746; ZNVER1-NEXT: # sched: [1:0.50] 9747; ZNVER1-NEXT: pushw $7 # sched: [1:0.50] 9748; ZNVER1-NEXT: #NO_APP 9749; ZNVER1-NEXT: retq # sched: [1:0.50] 9750 %1 = call i16 asm sideeffect "popw $0 \0A\09 popw $2 \0A\09 pushw $1 \0A\09 pushw $2 \0A\09 pushw $3 \0A\09 pushw $4", "=r,r,*m,i,i"(i16 %a0, i16 *%a1, i16 4095, i8 7) 9751 ret i16 %1 9752} 9753define i64 @test_pop_push_64(i64 %a0, i64 *%a1) optsize { 9754; GENERIC-LABEL: test_pop_push_64: 9755; GENERIC: # %bb.0: 9756; GENERIC-NEXT: #APP 9757; GENERIC-NEXT: popq %rax # sched: [6:0.50] 9758; GENERIC-NEXT: popq (%rsi) # sched: [6:0.50] 9759; GENERIC-NEXT: pushq %rdi # sched: [5:1.00] 9760; GENERIC-NEXT: pushq (%rsi) # sched: [5:1.00] 9761; GENERIC-NEXT: pushq $4095 # imm = 0xFFF 9762; GENERIC-NEXT: # sched: [1:1.00] 9763; GENERIC-NEXT: pushq $7 # sched: [5:1.00] 9764; GENERIC-NEXT: #NO_APP 9765; GENERIC-NEXT: retq # sched: [1:1.00] 9766; 9767; ATOM-LABEL: test_pop_push_64: 9768; ATOM: # %bb.0: 9769; ATOM-NEXT: #APP 9770; ATOM-NEXT: popq %rax # sched: [1:1.00] 9771; ATOM-NEXT: popq (%rsi) # sched: [3:1.50] 9772; ATOM-NEXT: pushq %rdi # sched: [1:1.00] 9773; ATOM-NEXT: pushq (%rsi) # sched: [2:1.00] 9774; ATOM-NEXT: pushq $4095 # imm = 0xFFF 9775; ATOM-NEXT: # sched: [1:1.00] 9776; ATOM-NEXT: pushq $7 # sched: [1:1.00] 9777; ATOM-NEXT: #NO_APP 9778; ATOM-NEXT: retq # sched: [79:39.50] 9779; 9780; SLM-LABEL: test_pop_push_64: 9781; SLM: # %bb.0: 9782; SLM-NEXT: #APP 9783; SLM-NEXT: popq %rax # sched: [3:1.00] 9784; SLM-NEXT: popq (%rsi) # sched: [1:1.00] 9785; SLM-NEXT: pushq %rdi # sched: [1:1.00] 9786; SLM-NEXT: pushq (%rsi) # sched: [1:1.00] 9787; SLM-NEXT: pushq $4095 # imm = 0xFFF 9788; SLM-NEXT: # sched: [1:1.00] 9789; SLM-NEXT: pushq $7 # sched: [1:1.00] 9790; SLM-NEXT: #NO_APP 9791; SLM-NEXT: retq # sched: [4:1.00] 9792; 9793; SANDY-LABEL: test_pop_push_64: 9794; SANDY: # %bb.0: 9795; SANDY-NEXT: #APP 9796; SANDY-NEXT: popq %rax # sched: [6:0.50] 9797; SANDY-NEXT: popq (%rsi) # sched: [6:0.50] 9798; SANDY-NEXT: pushq %rdi # sched: [5:1.00] 9799; SANDY-NEXT: pushq (%rsi) # sched: [5:1.00] 9800; SANDY-NEXT: pushq $4095 # imm = 0xFFF 9801; SANDY-NEXT: # sched: [1:1.00] 9802; SANDY-NEXT: pushq $7 # sched: [5:1.00] 9803; SANDY-NEXT: #NO_APP 9804; SANDY-NEXT: retq # sched: [1:1.00] 9805; 9806; HASWELL-LABEL: test_pop_push_64: 9807; HASWELL: # %bb.0: 9808; HASWELL-NEXT: #APP 9809; HASWELL-NEXT: popq %rax # sched: [6:0.50] 9810; HASWELL-NEXT: popq (%rsi) # sched: [7:1.00] 9811; HASWELL-NEXT: pushq %rdi # sched: [2:1.00] 9812; HASWELL-NEXT: pushq (%rsi) # sched: [7:1.00] 9813; HASWELL-NEXT: pushq $4095 # imm = 0xFFF 9814; HASWELL-NEXT: # sched: [1:1.00] 9815; HASWELL-NEXT: pushq $7 # sched: [2:1.00] 9816; HASWELL-NEXT: #NO_APP 9817; HASWELL-NEXT: retq # sched: [7:1.00] 9818; 9819; BROADWELL-LABEL: test_pop_push_64: 9820; BROADWELL: # %bb.0: 9821; BROADWELL-NEXT: #APP 9822; BROADWELL-NEXT: popq %rax # sched: [6:0.50] 9823; BROADWELL-NEXT: popq (%rsi) # sched: [6:1.00] 9824; BROADWELL-NEXT: pushq %rdi # sched: [2:1.00] 9825; BROADWELL-NEXT: pushq (%rsi) # sched: [6:1.00] 9826; BROADWELL-NEXT: pushq $4095 # imm = 0xFFF 9827; BROADWELL-NEXT: # sched: [1:1.00] 9828; BROADWELL-NEXT: pushq $7 # sched: [2:1.00] 9829; BROADWELL-NEXT: #NO_APP 9830; BROADWELL-NEXT: retq # sched: [7:1.00] 9831; 9832; SKYLAKE-LABEL: test_pop_push_64: 9833; SKYLAKE: # %bb.0: 9834; SKYLAKE-NEXT: #APP 9835; SKYLAKE-NEXT: popq %rax # sched: [6:0.50] 9836; SKYLAKE-NEXT: popq (%rsi) # sched: [6:1.00] 9837; SKYLAKE-NEXT: pushq %rdi # sched: [2:1.00] 9838; SKYLAKE-NEXT: pushq (%rsi) # sched: [6:1.00] 9839; SKYLAKE-NEXT: pushq $4095 # imm = 0xFFF 9840; SKYLAKE-NEXT: # sched: [1:1.00] 9841; SKYLAKE-NEXT: pushq $7 # sched: [2:1.00] 9842; SKYLAKE-NEXT: #NO_APP 9843; SKYLAKE-NEXT: retq # sched: [7:1.00] 9844; 9845; SKX-LABEL: test_pop_push_64: 9846; SKX: # %bb.0: 9847; SKX-NEXT: #APP 9848; SKX-NEXT: popq %rax # sched: [6:0.50] 9849; SKX-NEXT: popq (%rsi) # sched: [6:1.00] 9850; SKX-NEXT: pushq %rdi # sched: [2:1.00] 9851; SKX-NEXT: pushq (%rsi) # sched: [6:1.00] 9852; SKX-NEXT: pushq $4095 # imm = 0xFFF 9853; SKX-NEXT: # sched: [1:1.00] 9854; SKX-NEXT: pushq $7 # sched: [2:1.00] 9855; SKX-NEXT: #NO_APP 9856; SKX-NEXT: retq # sched: [7:1.00] 9857; 9858; BTVER2-LABEL: test_pop_push_64: 9859; BTVER2: # %bb.0: 9860; BTVER2-NEXT: #APP 9861; BTVER2-NEXT: popq %rax # sched: [5:1.00] 9862; BTVER2-NEXT: popq (%rsi) # sched: [1:1.00] 9863; BTVER2-NEXT: pushq %rdi # sched: [1:1.00] 9864; BTVER2-NEXT: pushq (%rsi) # sched: [1:1.00] 9865; BTVER2-NEXT: pushq $4095 # imm = 0xFFF 9866; BTVER2-NEXT: # sched: [1:1.00] 9867; BTVER2-NEXT: pushq $7 # sched: [1:1.00] 9868; BTVER2-NEXT: #NO_APP 9869; BTVER2-NEXT: retq # sched: [4:1.00] 9870; 9871; ZNVER1-LABEL: test_pop_push_64: 9872; ZNVER1: # %bb.0: 9873; ZNVER1-NEXT: #APP 9874; ZNVER1-NEXT: popq %rax # sched: [8:0.50] 9875; ZNVER1-NEXT: popq (%rsi) # sched: [1:0.50] 9876; ZNVER1-NEXT: pushq %rdi # sched: [1:0.50] 9877; ZNVER1-NEXT: pushq (%rsi) # sched: [1:0.50] 9878; ZNVER1-NEXT: pushq $4095 # imm = 0xFFF 9879; ZNVER1-NEXT: # sched: [1:0.50] 9880; ZNVER1-NEXT: pushq $7 # sched: [1:0.50] 9881; ZNVER1-NEXT: #NO_APP 9882; ZNVER1-NEXT: retq # sched: [1:0.50] 9883 %1 = call i64 asm sideeffect "popq $0 \0A\09 popq $2 \0A\09 pushq $1 \0A\09 pushq $2 \0A\09 pushq $3 \0A\09 pushq $4", "=r,r,*m,i,i"(i64 %a0, i64 *%a1, i64 4095, i8 7) 9884 ret i64 %1 9885} 9886 9887define void @test_popf_pushf() optsize { 9888; GENERIC-LABEL: test_popf_pushf: 9889; GENERIC: # %bb.0: 9890; GENERIC-NEXT: #APP 9891; GENERIC-NEXT: popfq # sched: [5:0.50] 9892; GENERIC-NEXT: pushfq # sched: [5:1.00] 9893; GENERIC-NEXT: #NO_APP 9894; GENERIC-NEXT: retq # sched: [1:1.00] 9895; 9896; ATOM-LABEL: test_popf_pushf: 9897; ATOM: # %bb.0: 9898; ATOM-NEXT: #APP 9899; ATOM-NEXT: popfq # sched: [26:13.00] 9900; ATOM-NEXT: pushfq # sched: [9:4.50] 9901; ATOM-NEXT: #NO_APP 9902; ATOM-NEXT: retq # sched: [79:39.50] 9903; 9904; SLM-LABEL: test_popf_pushf: 9905; SLM: # %bb.0: 9906; SLM-NEXT: #APP 9907; SLM-NEXT: popfq # sched: [3:1.00] 9908; SLM-NEXT: pushfq # sched: [1:1.00] 9909; SLM-NEXT: #NO_APP 9910; SLM-NEXT: retq # sched: [4:1.00] 9911; 9912; SANDY-LABEL: test_popf_pushf: 9913; SANDY: # %bb.0: 9914; SANDY-NEXT: #APP 9915; SANDY-NEXT: popfq # sched: [5:0.50] 9916; SANDY-NEXT: pushfq # sched: [5:1.00] 9917; SANDY-NEXT: #NO_APP 9918; SANDY-NEXT: retq # sched: [1:1.00] 9919; 9920; HASWELL-LABEL: test_popf_pushf: 9921; HASWELL: # %bb.0: 9922; HASWELL-NEXT: #APP 9923; HASWELL-NEXT: popfq # sched: [5:0.50] 9924; HASWELL-NEXT: pushfq # sched: [5:1.00] 9925; HASWELL-NEXT: #NO_APP 9926; HASWELL-NEXT: retq # sched: [7:1.00] 9927; 9928; BROADWELL-LABEL: test_popf_pushf: 9929; BROADWELL: # %bb.0: 9930; BROADWELL-NEXT: #APP 9931; BROADWELL-NEXT: popfq # sched: [22:4.25] 9932; BROADWELL-NEXT: pushfq # sched: [5:1.00] 9933; BROADWELL-NEXT: #NO_APP 9934; BROADWELL-NEXT: retq # sched: [7:1.00] 9935; 9936; SKYLAKE-LABEL: test_popf_pushf: 9937; SKYLAKE: # %bb.0: 9938; SKYLAKE-NEXT: #APP 9939; SKYLAKE-NEXT: popfq # sched: [5:0.50] 9940; SKYLAKE-NEXT: pushfq # sched: [5:1.00] 9941; SKYLAKE-NEXT: #NO_APP 9942; SKYLAKE-NEXT: retq # sched: [7:1.00] 9943; 9944; SKX-LABEL: test_popf_pushf: 9945; SKX: # %bb.0: 9946; SKX-NEXT: #APP 9947; SKX-NEXT: popfq # sched: [5:0.50] 9948; SKX-NEXT: pushfq # sched: [5:1.00] 9949; SKX-NEXT: #NO_APP 9950; SKX-NEXT: retq # sched: [7:1.00] 9951; 9952; BTVER2-LABEL: test_popf_pushf: 9953; BTVER2: # %bb.0: 9954; BTVER2-NEXT: #APP 9955; BTVER2-NEXT: popfq # sched: [5:1.00] 9956; BTVER2-NEXT: pushfq # sched: [1:1.00] 9957; BTVER2-NEXT: #NO_APP 9958; BTVER2-NEXT: retq # sched: [4:1.00] 9959; 9960; ZNVER1-LABEL: test_popf_pushf: 9961; ZNVER1: # %bb.0: 9962; ZNVER1-NEXT: #APP 9963; ZNVER1-NEXT: popfq # sched: [8:0.50] 9964; ZNVER1-NEXT: pushfq # sched: [1:0.50] 9965; ZNVER1-NEXT: #NO_APP 9966; ZNVER1-NEXT: retq # sched: [1:0.50] 9967 call void asm sideeffect "popf \0A\09 pushf", ""() 9968 ret void 9969} 9970 9971define void @test_rcl_rcr_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 9972; GENERIC-LABEL: test_rcl_rcr_8: 9973; GENERIC: # %bb.0: 9974; GENERIC-NEXT: #APP 9975; GENERIC-NEXT: rclb %dil # sched: [1:0.50] 9976; GENERIC-NEXT: rcrb %dil # sched: [1:0.50] 9977; GENERIC-NEXT: rclb (%rdx) # sched: [6:1.00] 9978; GENERIC-NEXT: rcrb (%rdx) # sched: [6:1.00] 9979; GENERIC-NEXT: rclb $7, %dil # sched: [1:0.50] 9980; GENERIC-NEXT: rcrb $7, %dil # sched: [1:0.50] 9981; GENERIC-NEXT: rclb $7, (%rdx) # sched: [6:1.00] 9982; GENERIC-NEXT: rcrb $7, (%rdx) # sched: [6:1.00] 9983; GENERIC-NEXT: rclb %cl, %dil # sched: [1:0.50] 9984; GENERIC-NEXT: rcrb %cl, %dil # sched: [1:0.50] 9985; GENERIC-NEXT: rclb %cl, (%rdx) # sched: [6:1.00] 9986; GENERIC-NEXT: rcrb %cl, (%rdx) # sched: [6:1.00] 9987; GENERIC-NEXT: #NO_APP 9988; GENERIC-NEXT: retq # sched: [1:1.00] 9989; 9990; ATOM-LABEL: test_rcl_rcr_8: 9991; ATOM: # %bb.0: 9992; ATOM-NEXT: #APP 9993; ATOM-NEXT: rclb %dil # sched: [1:1.00] 9994; ATOM-NEXT: rcrb %dil # sched: [1:1.00] 9995; ATOM-NEXT: rclb (%rdx) # sched: [1:1.00] 9996; ATOM-NEXT: rcrb (%rdx) # sched: [1:1.00] 9997; ATOM-NEXT: rclb $7, %dil # sched: [1:1.00] 9998; ATOM-NEXT: rcrb $7, %dil # sched: [1:1.00] 9999; ATOM-NEXT: rclb $7, (%rdx) # sched: [1:1.00] 10000; ATOM-NEXT: rcrb $7, (%rdx) # sched: [1:1.00] 10001; ATOM-NEXT: rclb %cl, %dil # sched: [1:1.00] 10002; ATOM-NEXT: rcrb %cl, %dil # sched: [1:1.00] 10003; ATOM-NEXT: rclb %cl, (%rdx) # sched: [1:1.00] 10004; ATOM-NEXT: rcrb %cl, (%rdx) # sched: [1:1.00] 10005; ATOM-NEXT: #NO_APP 10006; ATOM-NEXT: retq # sched: [79:39.50] 10007; 10008; SLM-LABEL: test_rcl_rcr_8: 10009; SLM: # %bb.0: 10010; SLM-NEXT: #APP 10011; SLM-NEXT: rclb %dil # sched: [1:1.00] 10012; SLM-NEXT: rcrb %dil # sched: [1:1.00] 10013; SLM-NEXT: rclb (%rdx) # sched: [4:2.00] 10014; SLM-NEXT: rcrb (%rdx) # sched: [4:2.00] 10015; SLM-NEXT: rclb $7, %dil # sched: [1:1.00] 10016; SLM-NEXT: rcrb $7, %dil # sched: [1:1.00] 10017; SLM-NEXT: rclb $7, (%rdx) # sched: [4:2.00] 10018; SLM-NEXT: rcrb $7, (%rdx) # sched: [4:2.00] 10019; SLM-NEXT: rclb %cl, %dil # sched: [1:1.00] 10020; SLM-NEXT: rcrb %cl, %dil # sched: [1:1.00] 10021; SLM-NEXT: rclb %cl, (%rdx) # sched: [4:2.00] 10022; SLM-NEXT: rcrb %cl, (%rdx) # sched: [4:2.00] 10023; SLM-NEXT: #NO_APP 10024; SLM-NEXT: retq # sched: [4:1.00] 10025; 10026; SANDY-LABEL: test_rcl_rcr_8: 10027; SANDY: # %bb.0: 10028; SANDY-NEXT: #APP 10029; SANDY-NEXT: rclb %dil # sched: [1:0.50] 10030; SANDY-NEXT: rcrb %dil # sched: [1:0.50] 10031; SANDY-NEXT: rclb (%rdx) # sched: [6:1.00] 10032; SANDY-NEXT: rcrb (%rdx) # sched: [6:1.00] 10033; SANDY-NEXT: rclb $7, %dil # sched: [1:0.50] 10034; SANDY-NEXT: rcrb $7, %dil # sched: [1:0.50] 10035; SANDY-NEXT: rclb $7, (%rdx) # sched: [6:1.00] 10036; SANDY-NEXT: rcrb $7, (%rdx) # sched: [6:1.00] 10037; SANDY-NEXT: rclb %cl, %dil # sched: [1:0.50] 10038; SANDY-NEXT: rcrb %cl, %dil # sched: [1:0.50] 10039; SANDY-NEXT: rclb %cl, (%rdx) # sched: [6:1.00] 10040; SANDY-NEXT: rcrb %cl, (%rdx) # sched: [6:1.00] 10041; SANDY-NEXT: #NO_APP 10042; SANDY-NEXT: retq # sched: [1:1.00] 10043; 10044; HASWELL-LABEL: test_rcl_rcr_8: 10045; HASWELL: # %bb.0: 10046; HASWELL-NEXT: #APP 10047; HASWELL-NEXT: rclb %dil # sched: [3:0.75] 10048; HASWELL-NEXT: rcrb %dil # sched: [3:0.75] 10049; HASWELL-NEXT: rclb (%rdx) # sched: [9:0.75] 10050; HASWELL-NEXT: rcrb (%rdx) # sched: [9:0.75] 10051; HASWELL-NEXT: rclb $7, %dil # sched: [3:0.75] 10052; HASWELL-NEXT: rcrb $7, %dil # sched: [3:0.75] 10053; HASWELL-NEXT: rclb $7, (%rdx) # sched: [9:0.75] 10054; HASWELL-NEXT: rcrb $7, (%rdx) # sched: [9:0.75] 10055; HASWELL-NEXT: rclb %cl, %dil # sched: [11:2.25] 10056; HASWELL-NEXT: rcrb %cl, %dil # sched: [14:2.50] 10057; HASWELL-NEXT: rclb %cl, (%rdx) # sched: [16:2.00] 10058; HASWELL-NEXT: rcrb %cl, (%rdx) # sched: [19:2.25] 10059; HASWELL-NEXT: #NO_APP 10060; HASWELL-NEXT: retq # sched: [7:1.00] 10061; 10062; BROADWELL-LABEL: test_rcl_rcr_8: 10063; BROADWELL: # %bb.0: 10064; BROADWELL-NEXT: #APP 10065; BROADWELL-NEXT: rclb %dil # sched: [3:0.75] 10066; BROADWELL-NEXT: rcrb %dil # sched: [3:0.75] 10067; BROADWELL-NEXT: rclb (%rdx) # sched: [8:0.75] 10068; BROADWELL-NEXT: rcrb (%rdx) # sched: [8:0.75] 10069; BROADWELL-NEXT: rclb $7, %dil # sched: [3:0.75] 10070; BROADWELL-NEXT: rcrb $7, %dil # sched: [3:0.75] 10071; BROADWELL-NEXT: rclb $7, (%rdx) # sched: [8:0.75] 10072; BROADWELL-NEXT: rcrb $7, (%rdx) # sched: [8:0.75] 10073; BROADWELL-NEXT: rclb %cl, %dil # sched: [11:2.25] 10074; BROADWELL-NEXT: rcrb %cl, %dil # sched: [14:2.50] 10075; BROADWELL-NEXT: rclb %cl, (%rdx) # sched: [15:2.00] 10076; BROADWELL-NEXT: rcrb %cl, (%rdx) # sched: [18:2.25] 10077; BROADWELL-NEXT: #NO_APP 10078; BROADWELL-NEXT: retq # sched: [7:1.00] 10079; 10080; SKYLAKE-LABEL: test_rcl_rcr_8: 10081; SKYLAKE: # %bb.0: 10082; SKYLAKE-NEXT: #APP 10083; SKYLAKE-NEXT: rclb %dil # sched: [3:0.75] 10084; SKYLAKE-NEXT: rcrb %dil # sched: [3:0.75] 10085; SKYLAKE-NEXT: rclb (%rdx) # sched: [8:0.75] 10086; SKYLAKE-NEXT: rcrb (%rdx) # sched: [8:0.75] 10087; SKYLAKE-NEXT: rclb $7, %dil # sched: [3:0.75] 10088; SKYLAKE-NEXT: rcrb $7, %dil # sched: [3:0.75] 10089; SKYLAKE-NEXT: rclb $7, (%rdx) # sched: [8:0.75] 10090; SKYLAKE-NEXT: rcrb $7, (%rdx) # sched: [8:0.75] 10091; SKYLAKE-NEXT: rclb %cl, %dil # sched: [11:2.50] 10092; SKYLAKE-NEXT: rcrb %cl, %dil # sched: [14:2.50] 10093; SKYLAKE-NEXT: rclb %cl, (%rdx) # sched: [15:2.50] 10094; SKYLAKE-NEXT: rcrb %cl, (%rdx) # sched: [18:2.25] 10095; SKYLAKE-NEXT: #NO_APP 10096; SKYLAKE-NEXT: retq # sched: [7:1.00] 10097; 10098; SKX-LABEL: test_rcl_rcr_8: 10099; SKX: # %bb.0: 10100; SKX-NEXT: #APP 10101; SKX-NEXT: rclb %dil # sched: [3:0.75] 10102; SKX-NEXT: rcrb %dil # sched: [3:0.75] 10103; SKX-NEXT: rclb (%rdx) # sched: [8:0.75] 10104; SKX-NEXT: rcrb (%rdx) # sched: [8:0.75] 10105; SKX-NEXT: rclb $7, %dil # sched: [3:0.75] 10106; SKX-NEXT: rcrb $7, %dil # sched: [3:0.75] 10107; SKX-NEXT: rclb $7, (%rdx) # sched: [8:0.75] 10108; SKX-NEXT: rcrb $7, (%rdx) # sched: [8:0.75] 10109; SKX-NEXT: rclb %cl, %dil # sched: [11:2.50] 10110; SKX-NEXT: rcrb %cl, %dil # sched: [14:2.50] 10111; SKX-NEXT: rclb %cl, (%rdx) # sched: [15:2.50] 10112; SKX-NEXT: rcrb %cl, (%rdx) # sched: [18:2.25] 10113; SKX-NEXT: #NO_APP 10114; SKX-NEXT: retq # sched: [7:1.00] 10115; 10116; BTVER2-LABEL: test_rcl_rcr_8: 10117; BTVER2: # %bb.0: 10118; BTVER2-NEXT: #APP 10119; BTVER2-NEXT: rclb %dil # sched: [1:0.50] 10120; BTVER2-NEXT: rcrb %dil # sched: [1:0.50] 10121; BTVER2-NEXT: rclb (%rdx) # sched: [4:1.00] 10122; BTVER2-NEXT: rcrb (%rdx) # sched: [4:1.00] 10123; BTVER2-NEXT: rclb $7, %dil # sched: [1:0.50] 10124; BTVER2-NEXT: rcrb $7, %dil # sched: [1:0.50] 10125; BTVER2-NEXT: rclb $7, (%rdx) # sched: [4:1.00] 10126; BTVER2-NEXT: rcrb $7, (%rdx) # sched: [4:1.00] 10127; BTVER2-NEXT: rclb %cl, %dil # sched: [1:0.50] 10128; BTVER2-NEXT: rcrb %cl, %dil # sched: [1:0.50] 10129; BTVER2-NEXT: rclb %cl, (%rdx) # sched: [4:1.00] 10130; BTVER2-NEXT: rcrb %cl, (%rdx) # sched: [4:1.00] 10131; BTVER2-NEXT: #NO_APP 10132; BTVER2-NEXT: retq # sched: [4:1.00] 10133; 10134; ZNVER1-LABEL: test_rcl_rcr_8: 10135; ZNVER1: # %bb.0: 10136; ZNVER1-NEXT: #APP 10137; ZNVER1-NEXT: rclb %dil # sched: [1:0.25] 10138; ZNVER1-NEXT: rcrb %dil # sched: [1:0.25] 10139; ZNVER1-NEXT: rclb (%rdx) # sched: [100:0.25] 10140; ZNVER1-NEXT: rcrb (%rdx) # sched: [100:0.25] 10141; ZNVER1-NEXT: rclb $7, %dil # sched: [1:0.25] 10142; ZNVER1-NEXT: rcrb $7, %dil # sched: [1:0.25] 10143; ZNVER1-NEXT: rclb $7, (%rdx) # sched: [100:0.25] 10144; ZNVER1-NEXT: rcrb $7, (%rdx) # sched: [100:0.25] 10145; ZNVER1-NEXT: rclb %cl, %dil # sched: [1:0.25] 10146; ZNVER1-NEXT: rcrb %cl, %dil # sched: [1:0.25] 10147; ZNVER1-NEXT: rclb %cl, (%rdx) # sched: [100:0.25] 10148; ZNVER1-NEXT: rcrb %cl, (%rdx) # sched: [100:0.25] 10149; ZNVER1-NEXT: #NO_APP 10150; ZNVER1-NEXT: retq # sched: [1:0.50] 10151 call void asm sideeffect "rclb $0 \0A\09 rcrb $0 \0A\09 rclb $2 \0A\09 rcrb $2 \0A\09 rclb $3, $0 \0A\09 rcrb $3, $0 \0A\09 rclb $3, $2 \0A\09 rcrb $3, $2 \0A\09 rclb %CL, $0 \0A\09 rcrb %CL, $0 \0A\09 rclb %CL, $2 \0A\09 rcrb %CL, $2", "r,r,*m,i"(i8 %a0, i8 %a1, i8 *%a2, i8 7) 10152 ret void 10153} 10154define void @test_rcl_rcr_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 10155; GENERIC-LABEL: test_rcl_rcr_16: 10156; GENERIC: # %bb.0: 10157; GENERIC-NEXT: #APP 10158; GENERIC-NEXT: rclw %di # sched: [1:0.50] 10159; GENERIC-NEXT: rcrw %di # sched: [1:0.50] 10160; GENERIC-NEXT: rclw (%rdx) # sched: [6:1.00] 10161; GENERIC-NEXT: rcrw (%rdx) # sched: [6:1.00] 10162; GENERIC-NEXT: rclw $7, %di # sched: [1:0.50] 10163; GENERIC-NEXT: rcrw $7, %di # sched: [1:0.50] 10164; GENERIC-NEXT: rclw $7, (%rdx) # sched: [6:1.00] 10165; GENERIC-NEXT: rcrw $7, (%rdx) # sched: [6:1.00] 10166; GENERIC-NEXT: rclw %cl, %di # sched: [1:0.50] 10167; GENERIC-NEXT: rcrw %cl, %di # sched: [1:0.50] 10168; GENERIC-NEXT: rclw %cl, (%rdx) # sched: [6:1.00] 10169; GENERIC-NEXT: rcrw %cl, (%rdx) # sched: [6:1.00] 10170; GENERIC-NEXT: #NO_APP 10171; GENERIC-NEXT: retq # sched: [1:1.00] 10172; 10173; ATOM-LABEL: test_rcl_rcr_16: 10174; ATOM: # %bb.0: 10175; ATOM-NEXT: #APP 10176; ATOM-NEXT: rclw %di # sched: [1:1.00] 10177; ATOM-NEXT: rcrw %di # sched: [1:1.00] 10178; ATOM-NEXT: rclw (%rdx) # sched: [1:1.00] 10179; ATOM-NEXT: rcrw (%rdx) # sched: [1:1.00] 10180; ATOM-NEXT: rclw $7, %di # sched: [1:1.00] 10181; ATOM-NEXT: rcrw $7, %di # sched: [1:1.00] 10182; ATOM-NEXT: rclw $7, (%rdx) # sched: [1:1.00] 10183; ATOM-NEXT: rcrw $7, (%rdx) # sched: [1:1.00] 10184; ATOM-NEXT: rclw %cl, %di # sched: [1:1.00] 10185; ATOM-NEXT: rcrw %cl, %di # sched: [1:1.00] 10186; ATOM-NEXT: rclw %cl, (%rdx) # sched: [1:1.00] 10187; ATOM-NEXT: rcrw %cl, (%rdx) # sched: [1:1.00] 10188; ATOM-NEXT: #NO_APP 10189; ATOM-NEXT: retq # sched: [79:39.50] 10190; 10191; SLM-LABEL: test_rcl_rcr_16: 10192; SLM: # %bb.0: 10193; SLM-NEXT: #APP 10194; SLM-NEXT: rclw %di # sched: [1:1.00] 10195; SLM-NEXT: rcrw %di # sched: [1:1.00] 10196; SLM-NEXT: rclw (%rdx) # sched: [4:2.00] 10197; SLM-NEXT: rcrw (%rdx) # sched: [4:2.00] 10198; SLM-NEXT: rclw $7, %di # sched: [1:1.00] 10199; SLM-NEXT: rcrw $7, %di # sched: [1:1.00] 10200; SLM-NEXT: rclw $7, (%rdx) # sched: [4:2.00] 10201; SLM-NEXT: rcrw $7, (%rdx) # sched: [4:2.00] 10202; SLM-NEXT: rclw %cl, %di # sched: [1:1.00] 10203; SLM-NEXT: rcrw %cl, %di # sched: [1:1.00] 10204; SLM-NEXT: rclw %cl, (%rdx) # sched: [4:2.00] 10205; SLM-NEXT: rcrw %cl, (%rdx) # sched: [4:2.00] 10206; SLM-NEXT: #NO_APP 10207; SLM-NEXT: retq # sched: [4:1.00] 10208; 10209; SANDY-LABEL: test_rcl_rcr_16: 10210; SANDY: # %bb.0: 10211; SANDY-NEXT: #APP 10212; SANDY-NEXT: rclw %di # sched: [1:0.50] 10213; SANDY-NEXT: rcrw %di # sched: [1:0.50] 10214; SANDY-NEXT: rclw (%rdx) # sched: [6:1.00] 10215; SANDY-NEXT: rcrw (%rdx) # sched: [6:1.00] 10216; SANDY-NEXT: rclw $7, %di # sched: [1:0.50] 10217; SANDY-NEXT: rcrw $7, %di # sched: [1:0.50] 10218; SANDY-NEXT: rclw $7, (%rdx) # sched: [6:1.00] 10219; SANDY-NEXT: rcrw $7, (%rdx) # sched: [6:1.00] 10220; SANDY-NEXT: rclw %cl, %di # sched: [1:0.50] 10221; SANDY-NEXT: rcrw %cl, %di # sched: [1:0.50] 10222; SANDY-NEXT: rclw %cl, (%rdx) # sched: [6:1.00] 10223; SANDY-NEXT: rcrw %cl, (%rdx) # sched: [6:1.00] 10224; SANDY-NEXT: #NO_APP 10225; SANDY-NEXT: retq # sched: [1:1.00] 10226; 10227; HASWELL-LABEL: test_rcl_rcr_16: 10228; HASWELL: # %bb.0: 10229; HASWELL-NEXT: #APP 10230; HASWELL-NEXT: rclw %di # sched: [3:0.75] 10231; HASWELL-NEXT: rcrw %di # sched: [3:0.75] 10232; HASWELL-NEXT: rclw (%rdx) # sched: [9:0.75] 10233; HASWELL-NEXT: rcrw (%rdx) # sched: [9:0.75] 10234; HASWELL-NEXT: rclw $7, %di # sched: [3:0.75] 10235; HASWELL-NEXT: rcrw $7, %di # sched: [3:0.75] 10236; HASWELL-NEXT: rclw $7, (%rdx) # sched: [9:0.75] 10237; HASWELL-NEXT: rcrw $7, (%rdx) # sched: [9:0.75] 10238; HASWELL-NEXT: rclw %cl, %di # sched: [11:2.00] 10239; HASWELL-NEXT: rcrw %cl, %di # sched: [11:2.00] 10240; HASWELL-NEXT: rclw %cl, (%rdx) # sched: [16:2.00] 10241; HASWELL-NEXT: rcrw %cl, (%rdx) # sched: [19:2.25] 10242; HASWELL-NEXT: #NO_APP 10243; HASWELL-NEXT: retq # sched: [7:1.00] 10244; 10245; BROADWELL-LABEL: test_rcl_rcr_16: 10246; BROADWELL: # %bb.0: 10247; BROADWELL-NEXT: #APP 10248; BROADWELL-NEXT: rclw %di # sched: [3:0.75] 10249; BROADWELL-NEXT: rcrw %di # sched: [3:0.75] 10250; BROADWELL-NEXT: rclw (%rdx) # sched: [8:0.75] 10251; BROADWELL-NEXT: rcrw (%rdx) # sched: [8:0.75] 10252; BROADWELL-NEXT: rclw $7, %di # sched: [3:0.75] 10253; BROADWELL-NEXT: rcrw $7, %di # sched: [3:0.75] 10254; BROADWELL-NEXT: rclw $7, (%rdx) # sched: [8:0.75] 10255; BROADWELL-NEXT: rcrw $7, (%rdx) # sched: [8:0.75] 10256; BROADWELL-NEXT: rclw %cl, %di # sched: [11:2.00] 10257; BROADWELL-NEXT: rcrw %cl, %di # sched: [11:2.00] 10258; BROADWELL-NEXT: rclw %cl, (%rdx) # sched: [15:2.00] 10259; BROADWELL-NEXT: rcrw %cl, (%rdx) # sched: [18:2.25] 10260; BROADWELL-NEXT: #NO_APP 10261; BROADWELL-NEXT: retq # sched: [7:1.00] 10262; 10263; SKYLAKE-LABEL: test_rcl_rcr_16: 10264; SKYLAKE: # %bb.0: 10265; SKYLAKE-NEXT: #APP 10266; SKYLAKE-NEXT: rclw %di # sched: [3:0.75] 10267; SKYLAKE-NEXT: rcrw %di # sched: [3:0.75] 10268; SKYLAKE-NEXT: rclw (%rdx) # sched: [8:0.75] 10269; SKYLAKE-NEXT: rcrw (%rdx) # sched: [8:0.75] 10270; SKYLAKE-NEXT: rclw $7, %di # sched: [3:0.75] 10271; SKYLAKE-NEXT: rcrw $7, %di # sched: [3:0.75] 10272; SKYLAKE-NEXT: rclw $7, (%rdx) # sched: [8:0.75] 10273; SKYLAKE-NEXT: rcrw $7, (%rdx) # sched: [8:0.75] 10274; SKYLAKE-NEXT: rclw %cl, %di # sched: [11:2.00] 10275; SKYLAKE-NEXT: rcrw %cl, %di # sched: [11:2.00] 10276; SKYLAKE-NEXT: rclw %cl, (%rdx) # sched: [15:2.50] 10277; SKYLAKE-NEXT: rcrw %cl, (%rdx) # sched: [18:2.25] 10278; SKYLAKE-NEXT: #NO_APP 10279; SKYLAKE-NEXT: retq # sched: [7:1.00] 10280; 10281; SKX-LABEL: test_rcl_rcr_16: 10282; SKX: # %bb.0: 10283; SKX-NEXT: #APP 10284; SKX-NEXT: rclw %di # sched: [3:0.75] 10285; SKX-NEXT: rcrw %di # sched: [3:0.75] 10286; SKX-NEXT: rclw (%rdx) # sched: [8:0.75] 10287; SKX-NEXT: rcrw (%rdx) # sched: [8:0.75] 10288; SKX-NEXT: rclw $7, %di # sched: [3:0.75] 10289; SKX-NEXT: rcrw $7, %di # sched: [3:0.75] 10290; SKX-NEXT: rclw $7, (%rdx) # sched: [8:0.75] 10291; SKX-NEXT: rcrw $7, (%rdx) # sched: [8:0.75] 10292; SKX-NEXT: rclw %cl, %di # sched: [11:2.00] 10293; SKX-NEXT: rcrw %cl, %di # sched: [11:2.00] 10294; SKX-NEXT: rclw %cl, (%rdx) # sched: [15:2.50] 10295; SKX-NEXT: rcrw %cl, (%rdx) # sched: [18:2.25] 10296; SKX-NEXT: #NO_APP 10297; SKX-NEXT: retq # sched: [7:1.00] 10298; 10299; BTVER2-LABEL: test_rcl_rcr_16: 10300; BTVER2: # %bb.0: 10301; BTVER2-NEXT: #APP 10302; BTVER2-NEXT: rclw %di # sched: [1:0.50] 10303; BTVER2-NEXT: rcrw %di # sched: [1:0.50] 10304; BTVER2-NEXT: rclw (%rdx) # sched: [4:1.00] 10305; BTVER2-NEXT: rcrw (%rdx) # sched: [4:1.00] 10306; BTVER2-NEXT: rclw $7, %di # sched: [1:0.50] 10307; BTVER2-NEXT: rcrw $7, %di # sched: [1:0.50] 10308; BTVER2-NEXT: rclw $7, (%rdx) # sched: [4:1.00] 10309; BTVER2-NEXT: rcrw $7, (%rdx) # sched: [4:1.00] 10310; BTVER2-NEXT: rclw %cl, %di # sched: [1:0.50] 10311; BTVER2-NEXT: rcrw %cl, %di # sched: [1:0.50] 10312; BTVER2-NEXT: rclw %cl, (%rdx) # sched: [4:1.00] 10313; BTVER2-NEXT: rcrw %cl, (%rdx) # sched: [4:1.00] 10314; BTVER2-NEXT: #NO_APP 10315; BTVER2-NEXT: retq # sched: [4:1.00] 10316; 10317; ZNVER1-LABEL: test_rcl_rcr_16: 10318; ZNVER1: # %bb.0: 10319; ZNVER1-NEXT: #APP 10320; ZNVER1-NEXT: rclw %di # sched: [1:0.25] 10321; ZNVER1-NEXT: rcrw %di # sched: [1:0.25] 10322; ZNVER1-NEXT: rclw (%rdx) # sched: [100:0.25] 10323; ZNVER1-NEXT: rcrw (%rdx) # sched: [100:0.25] 10324; ZNVER1-NEXT: rclw $7, %di # sched: [1:0.25] 10325; ZNVER1-NEXT: rcrw $7, %di # sched: [1:0.25] 10326; ZNVER1-NEXT: rclw $7, (%rdx) # sched: [100:0.25] 10327; ZNVER1-NEXT: rcrw $7, (%rdx) # sched: [100:0.25] 10328; ZNVER1-NEXT: rclw %cl, %di # sched: [1:0.25] 10329; ZNVER1-NEXT: rcrw %cl, %di # sched: [1:0.25] 10330; ZNVER1-NEXT: rclw %cl, (%rdx) # sched: [100:0.25] 10331; ZNVER1-NEXT: rcrw %cl, (%rdx) # sched: [100:0.25] 10332; ZNVER1-NEXT: #NO_APP 10333; ZNVER1-NEXT: retq # sched: [1:0.50] 10334 call void asm sideeffect "rclw $0 \0A\09 rcrw $0 \0A\09 rclw $2 \0A\09 rcrw $2 \0A\09 rclw $3, $0 \0A\09 rcrw $3, $0 \0A\09 rclw $3, $2 \0A\09 rcrw $3, $2 \0A\09 rclw %CL, $0 \0A\09 rcrw %CL, $0 \0A\09 rclw %CL, $2 \0A\09 rcrw %CL, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 10335 ret void 10336} 10337define void @test_rcl_rcr_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 10338; GENERIC-LABEL: test_rcl_rcr_32: 10339; GENERIC: # %bb.0: 10340; GENERIC-NEXT: #APP 10341; GENERIC-NEXT: rcll %edi # sched: [1:0.50] 10342; GENERIC-NEXT: rcrl %edi # sched: [1:0.50] 10343; GENERIC-NEXT: rcll (%rdx) # sched: [6:1.00] 10344; GENERIC-NEXT: rcrl (%rdx) # sched: [6:1.00] 10345; GENERIC-NEXT: rcll $7, %edi # sched: [1:0.50] 10346; GENERIC-NEXT: rcrl $7, %edi # sched: [1:0.50] 10347; GENERIC-NEXT: rcll $7, (%rdx) # sched: [6:1.00] 10348; GENERIC-NEXT: rcrl $7, (%rdx) # sched: [6:1.00] 10349; GENERIC-NEXT: rcll %cl, %edi # sched: [1:0.50] 10350; GENERIC-NEXT: rcrl %cl, %edi # sched: [1:0.50] 10351; GENERIC-NEXT: rcll %cl, (%rdx) # sched: [6:1.00] 10352; GENERIC-NEXT: rcrl %cl, (%rdx) # sched: [6:1.00] 10353; GENERIC-NEXT: #NO_APP 10354; GENERIC-NEXT: retq # sched: [1:1.00] 10355; 10356; ATOM-LABEL: test_rcl_rcr_32: 10357; ATOM: # %bb.0: 10358; ATOM-NEXT: #APP 10359; ATOM-NEXT: rcll %edi # sched: [1:1.00] 10360; ATOM-NEXT: rcrl %edi # sched: [1:1.00] 10361; ATOM-NEXT: rcll (%rdx) # sched: [1:1.00] 10362; ATOM-NEXT: rcrl (%rdx) # sched: [1:1.00] 10363; ATOM-NEXT: rcll $7, %edi # sched: [1:1.00] 10364; ATOM-NEXT: rcrl $7, %edi # sched: [1:1.00] 10365; ATOM-NEXT: rcll $7, (%rdx) # sched: [1:1.00] 10366; ATOM-NEXT: rcrl $7, (%rdx) # sched: [1:1.00] 10367; ATOM-NEXT: rcll %cl, %edi # sched: [1:1.00] 10368; ATOM-NEXT: rcrl %cl, %edi # sched: [1:1.00] 10369; ATOM-NEXT: rcll %cl, (%rdx) # sched: [1:1.00] 10370; ATOM-NEXT: rcrl %cl, (%rdx) # sched: [1:1.00] 10371; ATOM-NEXT: #NO_APP 10372; ATOM-NEXT: retq # sched: [79:39.50] 10373; 10374; SLM-LABEL: test_rcl_rcr_32: 10375; SLM: # %bb.0: 10376; SLM-NEXT: #APP 10377; SLM-NEXT: rcll %edi # sched: [1:1.00] 10378; SLM-NEXT: rcrl %edi # sched: [1:1.00] 10379; SLM-NEXT: rcll (%rdx) # sched: [4:2.00] 10380; SLM-NEXT: rcrl (%rdx) # sched: [4:2.00] 10381; SLM-NEXT: rcll $7, %edi # sched: [1:1.00] 10382; SLM-NEXT: rcrl $7, %edi # sched: [1:1.00] 10383; SLM-NEXT: rcll $7, (%rdx) # sched: [4:2.00] 10384; SLM-NEXT: rcrl $7, (%rdx) # sched: [4:2.00] 10385; SLM-NEXT: rcll %cl, %edi # sched: [1:1.00] 10386; SLM-NEXT: rcrl %cl, %edi # sched: [1:1.00] 10387; SLM-NEXT: rcll %cl, (%rdx) # sched: [4:2.00] 10388; SLM-NEXT: rcrl %cl, (%rdx) # sched: [4:2.00] 10389; SLM-NEXT: #NO_APP 10390; SLM-NEXT: retq # sched: [4:1.00] 10391; 10392; SANDY-LABEL: test_rcl_rcr_32: 10393; SANDY: # %bb.0: 10394; SANDY-NEXT: #APP 10395; SANDY-NEXT: rcll %edi # sched: [1:0.50] 10396; SANDY-NEXT: rcrl %edi # sched: [1:0.50] 10397; SANDY-NEXT: rcll (%rdx) # sched: [6:1.00] 10398; SANDY-NEXT: rcrl (%rdx) # sched: [6:1.00] 10399; SANDY-NEXT: rcll $7, %edi # sched: [1:0.50] 10400; SANDY-NEXT: rcrl $7, %edi # sched: [1:0.50] 10401; SANDY-NEXT: rcll $7, (%rdx) # sched: [6:1.00] 10402; SANDY-NEXT: rcrl $7, (%rdx) # sched: [6:1.00] 10403; SANDY-NEXT: rcll %cl, %edi # sched: [1:0.50] 10404; SANDY-NEXT: rcrl %cl, %edi # sched: [1:0.50] 10405; SANDY-NEXT: rcll %cl, (%rdx) # sched: [6:1.00] 10406; SANDY-NEXT: rcrl %cl, (%rdx) # sched: [6:1.00] 10407; SANDY-NEXT: #NO_APP 10408; SANDY-NEXT: retq # sched: [1:1.00] 10409; 10410; HASWELL-LABEL: test_rcl_rcr_32: 10411; HASWELL: # %bb.0: 10412; HASWELL-NEXT: #APP 10413; HASWELL-NEXT: rcll %edi # sched: [3:0.75] 10414; HASWELL-NEXT: rcrl %edi # sched: [3:0.75] 10415; HASWELL-NEXT: rcll (%rdx) # sched: [9:0.75] 10416; HASWELL-NEXT: rcrl (%rdx) # sched: [9:0.75] 10417; HASWELL-NEXT: rcll $7, %edi # sched: [3:0.75] 10418; HASWELL-NEXT: rcrl $7, %edi # sched: [3:0.75] 10419; HASWELL-NEXT: rcll $7, (%rdx) # sched: [9:0.75] 10420; HASWELL-NEXT: rcrl $7, (%rdx) # sched: [9:0.75] 10421; HASWELL-NEXT: rcll %cl, %edi # sched: [11:2.00] 10422; HASWELL-NEXT: rcrl %cl, %edi # sched: [11:2.00] 10423; HASWELL-NEXT: rcll %cl, (%rdx) # sched: [16:2.00] 10424; HASWELL-NEXT: rcrl %cl, (%rdx) # sched: [19:2.25] 10425; HASWELL-NEXT: #NO_APP 10426; HASWELL-NEXT: retq # sched: [7:1.00] 10427; 10428; BROADWELL-LABEL: test_rcl_rcr_32: 10429; BROADWELL: # %bb.0: 10430; BROADWELL-NEXT: #APP 10431; BROADWELL-NEXT: rcll %edi # sched: [3:0.75] 10432; BROADWELL-NEXT: rcrl %edi # sched: [3:0.75] 10433; BROADWELL-NEXT: rcll (%rdx) # sched: [8:0.75] 10434; BROADWELL-NEXT: rcrl (%rdx) # sched: [8:0.75] 10435; BROADWELL-NEXT: rcll $7, %edi # sched: [3:0.75] 10436; BROADWELL-NEXT: rcrl $7, %edi # sched: [3:0.75] 10437; BROADWELL-NEXT: rcll $7, (%rdx) # sched: [8:0.75] 10438; BROADWELL-NEXT: rcrl $7, (%rdx) # sched: [8:0.75] 10439; BROADWELL-NEXT: rcll %cl, %edi # sched: [11:2.00] 10440; BROADWELL-NEXT: rcrl %cl, %edi # sched: [11:2.00] 10441; BROADWELL-NEXT: rcll %cl, (%rdx) # sched: [15:2.00] 10442; BROADWELL-NEXT: rcrl %cl, (%rdx) # sched: [18:2.25] 10443; BROADWELL-NEXT: #NO_APP 10444; BROADWELL-NEXT: retq # sched: [7:1.00] 10445; 10446; SKYLAKE-LABEL: test_rcl_rcr_32: 10447; SKYLAKE: # %bb.0: 10448; SKYLAKE-NEXT: #APP 10449; SKYLAKE-NEXT: rcll %edi # sched: [3:0.75] 10450; SKYLAKE-NEXT: rcrl %edi # sched: [3:0.75] 10451; SKYLAKE-NEXT: rcll (%rdx) # sched: [8:0.75] 10452; SKYLAKE-NEXT: rcrl (%rdx) # sched: [8:0.75] 10453; SKYLAKE-NEXT: rcll $7, %edi # sched: [3:0.75] 10454; SKYLAKE-NEXT: rcrl $7, %edi # sched: [3:0.75] 10455; SKYLAKE-NEXT: rcll $7, (%rdx) # sched: [8:0.75] 10456; SKYLAKE-NEXT: rcrl $7, (%rdx) # sched: [8:0.75] 10457; SKYLAKE-NEXT: rcll %cl, %edi # sched: [11:2.00] 10458; SKYLAKE-NEXT: rcrl %cl, %edi # sched: [11:2.00] 10459; SKYLAKE-NEXT: rcll %cl, (%rdx) # sched: [15:2.50] 10460; SKYLAKE-NEXT: rcrl %cl, (%rdx) # sched: [18:2.25] 10461; SKYLAKE-NEXT: #NO_APP 10462; SKYLAKE-NEXT: retq # sched: [7:1.00] 10463; 10464; SKX-LABEL: test_rcl_rcr_32: 10465; SKX: # %bb.0: 10466; SKX-NEXT: #APP 10467; SKX-NEXT: rcll %edi # sched: [3:0.75] 10468; SKX-NEXT: rcrl %edi # sched: [3:0.75] 10469; SKX-NEXT: rcll (%rdx) # sched: [8:0.75] 10470; SKX-NEXT: rcrl (%rdx) # sched: [8:0.75] 10471; SKX-NEXT: rcll $7, %edi # sched: [3:0.75] 10472; SKX-NEXT: rcrl $7, %edi # sched: [3:0.75] 10473; SKX-NEXT: rcll $7, (%rdx) # sched: [8:0.75] 10474; SKX-NEXT: rcrl $7, (%rdx) # sched: [8:0.75] 10475; SKX-NEXT: rcll %cl, %edi # sched: [11:2.00] 10476; SKX-NEXT: rcrl %cl, %edi # sched: [11:2.00] 10477; SKX-NEXT: rcll %cl, (%rdx) # sched: [15:2.50] 10478; SKX-NEXT: rcrl %cl, (%rdx) # sched: [18:2.25] 10479; SKX-NEXT: #NO_APP 10480; SKX-NEXT: retq # sched: [7:1.00] 10481; 10482; BTVER2-LABEL: test_rcl_rcr_32: 10483; BTVER2: # %bb.0: 10484; BTVER2-NEXT: #APP 10485; BTVER2-NEXT: rcll %edi # sched: [1:0.50] 10486; BTVER2-NEXT: rcrl %edi # sched: [1:0.50] 10487; BTVER2-NEXT: rcll (%rdx) # sched: [4:1.00] 10488; BTVER2-NEXT: rcrl (%rdx) # sched: [4:1.00] 10489; BTVER2-NEXT: rcll $7, %edi # sched: [1:0.50] 10490; BTVER2-NEXT: rcrl $7, %edi # sched: [1:0.50] 10491; BTVER2-NEXT: rcll $7, (%rdx) # sched: [4:1.00] 10492; BTVER2-NEXT: rcrl $7, (%rdx) # sched: [4:1.00] 10493; BTVER2-NEXT: rcll %cl, %edi # sched: [1:0.50] 10494; BTVER2-NEXT: rcrl %cl, %edi # sched: [1:0.50] 10495; BTVER2-NEXT: rcll %cl, (%rdx) # sched: [4:1.00] 10496; BTVER2-NEXT: rcrl %cl, (%rdx) # sched: [4:1.00] 10497; BTVER2-NEXT: #NO_APP 10498; BTVER2-NEXT: retq # sched: [4:1.00] 10499; 10500; ZNVER1-LABEL: test_rcl_rcr_32: 10501; ZNVER1: # %bb.0: 10502; ZNVER1-NEXT: #APP 10503; ZNVER1-NEXT: rcll %edi # sched: [1:0.25] 10504; ZNVER1-NEXT: rcrl %edi # sched: [1:0.25] 10505; ZNVER1-NEXT: rcll (%rdx) # sched: [100:0.25] 10506; ZNVER1-NEXT: rcrl (%rdx) # sched: [100:0.25] 10507; ZNVER1-NEXT: rcll $7, %edi # sched: [1:0.25] 10508; ZNVER1-NEXT: rcrl $7, %edi # sched: [1:0.25] 10509; ZNVER1-NEXT: rcll $7, (%rdx) # sched: [100:0.25] 10510; ZNVER1-NEXT: rcrl $7, (%rdx) # sched: [100:0.25] 10511; ZNVER1-NEXT: rcll %cl, %edi # sched: [1:0.25] 10512; ZNVER1-NEXT: rcrl %cl, %edi # sched: [1:0.25] 10513; ZNVER1-NEXT: rcll %cl, (%rdx) # sched: [100:0.25] 10514; ZNVER1-NEXT: rcrl %cl, (%rdx) # sched: [100:0.25] 10515; ZNVER1-NEXT: #NO_APP 10516; ZNVER1-NEXT: retq # sched: [1:0.50] 10517 call void asm sideeffect "rcll $0 \0A\09 rcrl $0 \0A\09 rcll $2 \0A\09 rcrl $2 \0A\09 rcll $3, $0 \0A\09 rcrl $3, $0 \0A\09 rcll $3, $2 \0A\09 rcrl $3, $2 \0A\09 rcll %CL, $0 \0A\09 rcrl %CL, $0 \0A\09 rcll %CL, $2 \0A\09 rcrl %CL, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 10518 ret void 10519} 10520define void @test_rcl_rcr_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 10521; GENERIC-LABEL: test_rcl_rcr_64: 10522; GENERIC: # %bb.0: 10523; GENERIC-NEXT: #APP 10524; GENERIC-NEXT: rclq %rdi # sched: [1:0.50] 10525; GENERIC-NEXT: rcrq %rdi # sched: [1:0.50] 10526; GENERIC-NEXT: rclq (%rdx) # sched: [6:1.00] 10527; GENERIC-NEXT: rcrq (%rdx) # sched: [6:1.00] 10528; GENERIC-NEXT: rclq $7, %rdi # sched: [1:0.50] 10529; GENERIC-NEXT: rcrq $7, %rdi # sched: [1:0.50] 10530; GENERIC-NEXT: rclq $7, (%rdx) # sched: [6:1.00] 10531; GENERIC-NEXT: rcrq $7, (%rdx) # sched: [6:1.00] 10532; GENERIC-NEXT: rclq %cl, %rdi # sched: [1:0.50] 10533; GENERIC-NEXT: rcrq %cl, %rdi # sched: [1:0.50] 10534; GENERIC-NEXT: rclq %cl, (%rdx) # sched: [6:1.00] 10535; GENERIC-NEXT: rcrq %cl, (%rdx) # sched: [6:1.00] 10536; GENERIC-NEXT: #NO_APP 10537; GENERIC-NEXT: retq # sched: [1:1.00] 10538; 10539; ATOM-LABEL: test_rcl_rcr_64: 10540; ATOM: # %bb.0: 10541; ATOM-NEXT: #APP 10542; ATOM-NEXT: rclq %rdi # sched: [1:1.00] 10543; ATOM-NEXT: rcrq %rdi # sched: [1:1.00] 10544; ATOM-NEXT: rclq (%rdx) # sched: [1:1.00] 10545; ATOM-NEXT: rcrq (%rdx) # sched: [1:1.00] 10546; ATOM-NEXT: rclq $7, %rdi # sched: [1:1.00] 10547; ATOM-NEXT: rcrq $7, %rdi # sched: [1:1.00] 10548; ATOM-NEXT: rclq $7, (%rdx) # sched: [1:1.00] 10549; ATOM-NEXT: rcrq $7, (%rdx) # sched: [1:1.00] 10550; ATOM-NEXT: rclq %cl, %rdi # sched: [1:1.00] 10551; ATOM-NEXT: rcrq %cl, %rdi # sched: [1:1.00] 10552; ATOM-NEXT: rclq %cl, (%rdx) # sched: [1:1.00] 10553; ATOM-NEXT: rcrq %cl, (%rdx) # sched: [1:1.00] 10554; ATOM-NEXT: #NO_APP 10555; ATOM-NEXT: retq # sched: [79:39.50] 10556; 10557; SLM-LABEL: test_rcl_rcr_64: 10558; SLM: # %bb.0: 10559; SLM-NEXT: #APP 10560; SLM-NEXT: rclq %rdi # sched: [1:1.00] 10561; SLM-NEXT: rcrq %rdi # sched: [1:1.00] 10562; SLM-NEXT: rclq (%rdx) # sched: [4:2.00] 10563; SLM-NEXT: rcrq (%rdx) # sched: [4:2.00] 10564; SLM-NEXT: rclq $7, %rdi # sched: [1:1.00] 10565; SLM-NEXT: rcrq $7, %rdi # sched: [1:1.00] 10566; SLM-NEXT: rclq $7, (%rdx) # sched: [4:2.00] 10567; SLM-NEXT: rcrq $7, (%rdx) # sched: [4:2.00] 10568; SLM-NEXT: rclq %cl, %rdi # sched: [1:1.00] 10569; SLM-NEXT: rcrq %cl, %rdi # sched: [1:1.00] 10570; SLM-NEXT: rclq %cl, (%rdx) # sched: [4:2.00] 10571; SLM-NEXT: rcrq %cl, (%rdx) # sched: [4:2.00] 10572; SLM-NEXT: #NO_APP 10573; SLM-NEXT: retq # sched: [4:1.00] 10574; 10575; SANDY-LABEL: test_rcl_rcr_64: 10576; SANDY: # %bb.0: 10577; SANDY-NEXT: #APP 10578; SANDY-NEXT: rclq %rdi # sched: [1:0.50] 10579; SANDY-NEXT: rcrq %rdi # sched: [1:0.50] 10580; SANDY-NEXT: rclq (%rdx) # sched: [6:1.00] 10581; SANDY-NEXT: rcrq (%rdx) # sched: [6:1.00] 10582; SANDY-NEXT: rclq $7, %rdi # sched: [1:0.50] 10583; SANDY-NEXT: rcrq $7, %rdi # sched: [1:0.50] 10584; SANDY-NEXT: rclq $7, (%rdx) # sched: [6:1.00] 10585; SANDY-NEXT: rcrq $7, (%rdx) # sched: [6:1.00] 10586; SANDY-NEXT: rclq %cl, %rdi # sched: [1:0.50] 10587; SANDY-NEXT: rcrq %cl, %rdi # sched: [1:0.50] 10588; SANDY-NEXT: rclq %cl, (%rdx) # sched: [6:1.00] 10589; SANDY-NEXT: rcrq %cl, (%rdx) # sched: [6:1.00] 10590; SANDY-NEXT: #NO_APP 10591; SANDY-NEXT: retq # sched: [1:1.00] 10592; 10593; HASWELL-LABEL: test_rcl_rcr_64: 10594; HASWELL: # %bb.0: 10595; HASWELL-NEXT: #APP 10596; HASWELL-NEXT: rclq %rdi # sched: [3:0.75] 10597; HASWELL-NEXT: rcrq %rdi # sched: [3:0.75] 10598; HASWELL-NEXT: rclq (%rdx) # sched: [9:0.75] 10599; HASWELL-NEXT: rcrq (%rdx) # sched: [9:0.75] 10600; HASWELL-NEXT: rclq $7, %rdi # sched: [3:0.75] 10601; HASWELL-NEXT: rcrq $7, %rdi # sched: [3:0.75] 10602; HASWELL-NEXT: rclq $7, (%rdx) # sched: [9:0.75] 10603; HASWELL-NEXT: rcrq $7, (%rdx) # sched: [9:0.75] 10604; HASWELL-NEXT: rclq %cl, %rdi # sched: [11:2.00] 10605; HASWELL-NEXT: rcrq %cl, %rdi # sched: [11:2.00] 10606; HASWELL-NEXT: rclq %cl, (%rdx) # sched: [16:2.00] 10607; HASWELL-NEXT: rcrq %cl, (%rdx) # sched: [19:2.25] 10608; HASWELL-NEXT: #NO_APP 10609; HASWELL-NEXT: retq # sched: [7:1.00] 10610; 10611; BROADWELL-LABEL: test_rcl_rcr_64: 10612; BROADWELL: # %bb.0: 10613; BROADWELL-NEXT: #APP 10614; BROADWELL-NEXT: rclq %rdi # sched: [3:0.75] 10615; BROADWELL-NEXT: rcrq %rdi # sched: [3:0.75] 10616; BROADWELL-NEXT: rclq (%rdx) # sched: [8:0.75] 10617; BROADWELL-NEXT: rcrq (%rdx) # sched: [8:0.75] 10618; BROADWELL-NEXT: rclq $7, %rdi # sched: [3:0.75] 10619; BROADWELL-NEXT: rcrq $7, %rdi # sched: [3:0.75] 10620; BROADWELL-NEXT: rclq $7, (%rdx) # sched: [8:0.75] 10621; BROADWELL-NEXT: rcrq $7, (%rdx) # sched: [8:0.75] 10622; BROADWELL-NEXT: rclq %cl, %rdi # sched: [11:2.00] 10623; BROADWELL-NEXT: rcrq %cl, %rdi # sched: [11:2.00] 10624; BROADWELL-NEXT: rclq %cl, (%rdx) # sched: [15:2.00] 10625; BROADWELL-NEXT: rcrq %cl, (%rdx) # sched: [18:2.25] 10626; BROADWELL-NEXT: #NO_APP 10627; BROADWELL-NEXT: retq # sched: [7:1.00] 10628; 10629; SKYLAKE-LABEL: test_rcl_rcr_64: 10630; SKYLAKE: # %bb.0: 10631; SKYLAKE-NEXT: #APP 10632; SKYLAKE-NEXT: rclq %rdi # sched: [3:0.75] 10633; SKYLAKE-NEXT: rcrq %rdi # sched: [3:0.75] 10634; SKYLAKE-NEXT: rclq (%rdx) # sched: [8:0.75] 10635; SKYLAKE-NEXT: rcrq (%rdx) # sched: [8:0.75] 10636; SKYLAKE-NEXT: rclq $7, %rdi # sched: [3:0.75] 10637; SKYLAKE-NEXT: rcrq $7, %rdi # sched: [3:0.75] 10638; SKYLAKE-NEXT: rclq $7, (%rdx) # sched: [8:0.75] 10639; SKYLAKE-NEXT: rcrq $7, (%rdx) # sched: [8:0.75] 10640; SKYLAKE-NEXT: rclq %cl, %rdi # sched: [11:2.00] 10641; SKYLAKE-NEXT: rcrq %cl, %rdi # sched: [11:2.00] 10642; SKYLAKE-NEXT: rclq %cl, (%rdx) # sched: [15:2.50] 10643; SKYLAKE-NEXT: rcrq %cl, (%rdx) # sched: [18:2.25] 10644; SKYLAKE-NEXT: #NO_APP 10645; SKYLAKE-NEXT: retq # sched: [7:1.00] 10646; 10647; SKX-LABEL: test_rcl_rcr_64: 10648; SKX: # %bb.0: 10649; SKX-NEXT: #APP 10650; SKX-NEXT: rclq %rdi # sched: [3:0.75] 10651; SKX-NEXT: rcrq %rdi # sched: [3:0.75] 10652; SKX-NEXT: rclq (%rdx) # sched: [8:0.75] 10653; SKX-NEXT: rcrq (%rdx) # sched: [8:0.75] 10654; SKX-NEXT: rclq $7, %rdi # sched: [3:0.75] 10655; SKX-NEXT: rcrq $7, %rdi # sched: [3:0.75] 10656; SKX-NEXT: rclq $7, (%rdx) # sched: [8:0.75] 10657; SKX-NEXT: rcrq $7, (%rdx) # sched: [8:0.75] 10658; SKX-NEXT: rclq %cl, %rdi # sched: [11:2.00] 10659; SKX-NEXT: rcrq %cl, %rdi # sched: [11:2.00] 10660; SKX-NEXT: rclq %cl, (%rdx) # sched: [15:2.50] 10661; SKX-NEXT: rcrq %cl, (%rdx) # sched: [18:2.25] 10662; SKX-NEXT: #NO_APP 10663; SKX-NEXT: retq # sched: [7:1.00] 10664; 10665; BTVER2-LABEL: test_rcl_rcr_64: 10666; BTVER2: # %bb.0: 10667; BTVER2-NEXT: #APP 10668; BTVER2-NEXT: rclq %rdi # sched: [1:0.50] 10669; BTVER2-NEXT: rcrq %rdi # sched: [1:0.50] 10670; BTVER2-NEXT: rclq (%rdx) # sched: [4:1.00] 10671; BTVER2-NEXT: rcrq (%rdx) # sched: [4:1.00] 10672; BTVER2-NEXT: rclq $7, %rdi # sched: [1:0.50] 10673; BTVER2-NEXT: rcrq $7, %rdi # sched: [1:0.50] 10674; BTVER2-NEXT: rclq $7, (%rdx) # sched: [4:1.00] 10675; BTVER2-NEXT: rcrq $7, (%rdx) # sched: [4:1.00] 10676; BTVER2-NEXT: rclq %cl, %rdi # sched: [1:0.50] 10677; BTVER2-NEXT: rcrq %cl, %rdi # sched: [1:0.50] 10678; BTVER2-NEXT: rclq %cl, (%rdx) # sched: [4:1.00] 10679; BTVER2-NEXT: rcrq %cl, (%rdx) # sched: [4:1.00] 10680; BTVER2-NEXT: #NO_APP 10681; BTVER2-NEXT: retq # sched: [4:1.00] 10682; 10683; ZNVER1-LABEL: test_rcl_rcr_64: 10684; ZNVER1: # %bb.0: 10685; ZNVER1-NEXT: #APP 10686; ZNVER1-NEXT: rclq %rdi # sched: [1:0.25] 10687; ZNVER1-NEXT: rcrq %rdi # sched: [1:0.25] 10688; ZNVER1-NEXT: rclq (%rdx) # sched: [100:0.25] 10689; ZNVER1-NEXT: rcrq (%rdx) # sched: [100:0.25] 10690; ZNVER1-NEXT: rclq $7, %rdi # sched: [1:0.25] 10691; ZNVER1-NEXT: rcrq $7, %rdi # sched: [1:0.25] 10692; ZNVER1-NEXT: rclq $7, (%rdx) # sched: [100:0.25] 10693; ZNVER1-NEXT: rcrq $7, (%rdx) # sched: [100:0.25] 10694; ZNVER1-NEXT: rclq %cl, %rdi # sched: [1:0.25] 10695; ZNVER1-NEXT: rcrq %cl, %rdi # sched: [1:0.25] 10696; ZNVER1-NEXT: rclq %cl, (%rdx) # sched: [100:0.25] 10697; ZNVER1-NEXT: rcrq %cl, (%rdx) # sched: [100:0.25] 10698; ZNVER1-NEXT: #NO_APP 10699; ZNVER1-NEXT: retq # sched: [1:0.50] 10700 call void asm sideeffect "rclq $0 \0A\09 rcrq $0 \0A\09 rclq $2 \0A\09 rcrq $2 \0A\09 rclq $3, $0 \0A\09 rcrq $3, $0 \0A\09 rclq $3, $2 \0A\09 rcrq $3, $2 \0A\09 rclq %CL, $0 \0A\09 rcrq %CL, $0 \0A\09 rclq %CL, $2 \0A\09 rcrq %CL, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 10701 ret void 10702} 10703 10704define void @test_rdmsr_wrmsr() optsize { 10705; GENERIC-LABEL: test_rdmsr_wrmsr: 10706; GENERIC: # %bb.0: 10707; GENERIC-NEXT: #APP 10708; GENERIC-NEXT: rdmsr # sched: [100:0.33] 10709; GENERIC-NEXT: wrmsr # sched: [100:0.33] 10710; GENERIC-NEXT: #NO_APP 10711; GENERIC-NEXT: retq # sched: [1:1.00] 10712; 10713; ATOM-LABEL: test_rdmsr_wrmsr: 10714; ATOM: # %bb.0: 10715; ATOM-NEXT: #APP 10716; ATOM-NEXT: rdmsr # sched: [78:39.00] 10717; ATOM-NEXT: wrmsr # sched: [202:101.00] 10718; ATOM-NEXT: #NO_APP 10719; ATOM-NEXT: retq # sched: [79:39.50] 10720; 10721; SLM-LABEL: test_rdmsr_wrmsr: 10722; SLM: # %bb.0: 10723; SLM-NEXT: #APP 10724; SLM-NEXT: rdmsr # sched: [100:1.00] 10725; SLM-NEXT: wrmsr # sched: [100:1.00] 10726; SLM-NEXT: #NO_APP 10727; SLM-NEXT: retq # sched: [4:1.00] 10728; 10729; SANDY-LABEL: test_rdmsr_wrmsr: 10730; SANDY: # %bb.0: 10731; SANDY-NEXT: #APP 10732; SANDY-NEXT: rdmsr # sched: [100:0.33] 10733; SANDY-NEXT: wrmsr # sched: [100:0.33] 10734; SANDY-NEXT: #NO_APP 10735; SANDY-NEXT: retq # sched: [1:1.00] 10736; 10737; HASWELL-LABEL: test_rdmsr_wrmsr: 10738; HASWELL: # %bb.0: 10739; HASWELL-NEXT: #APP 10740; HASWELL-NEXT: rdmsr # sched: [100:0.25] 10741; HASWELL-NEXT: wrmsr # sched: [100:0.25] 10742; HASWELL-NEXT: #NO_APP 10743; HASWELL-NEXT: retq # sched: [7:1.00] 10744; 10745; BROADWELL-LABEL: test_rdmsr_wrmsr: 10746; BROADWELL: # %bb.0: 10747; BROADWELL-NEXT: #APP 10748; BROADWELL-NEXT: rdmsr # sched: [100:0.25] 10749; BROADWELL-NEXT: wrmsr # sched: [100:0.25] 10750; BROADWELL-NEXT: #NO_APP 10751; BROADWELL-NEXT: retq # sched: [7:1.00] 10752; 10753; SKYLAKE-LABEL: test_rdmsr_wrmsr: 10754; SKYLAKE: # %bb.0: 10755; SKYLAKE-NEXT: #APP 10756; SKYLAKE-NEXT: rdmsr # sched: [100:0.25] 10757; SKYLAKE-NEXT: wrmsr # sched: [100:0.25] 10758; SKYLAKE-NEXT: #NO_APP 10759; SKYLAKE-NEXT: retq # sched: [7:1.00] 10760; 10761; SKX-LABEL: test_rdmsr_wrmsr: 10762; SKX: # %bb.0: 10763; SKX-NEXT: #APP 10764; SKX-NEXT: rdmsr # sched: [100:0.25] 10765; SKX-NEXT: wrmsr # sched: [100:0.25] 10766; SKX-NEXT: #NO_APP 10767; SKX-NEXT: retq # sched: [7:1.00] 10768; 10769; BTVER2-LABEL: test_rdmsr_wrmsr: 10770; BTVER2: # %bb.0: 10771; BTVER2-NEXT: #APP 10772; BTVER2-NEXT: rdmsr # sched: [100:0.50] 10773; BTVER2-NEXT: wrmsr # sched: [100:0.50] 10774; BTVER2-NEXT: #NO_APP 10775; BTVER2-NEXT: retq # sched: [4:1.00] 10776; 10777; ZNVER1-LABEL: test_rdmsr_wrmsr: 10778; ZNVER1: # %bb.0: 10779; ZNVER1-NEXT: #APP 10780; ZNVER1-NEXT: rdmsr # sched: [100:0.25] 10781; ZNVER1-NEXT: wrmsr # sched: [100:0.25] 10782; ZNVER1-NEXT: #NO_APP 10783; ZNVER1-NEXT: retq # sched: [1:0.50] 10784 call void asm sideeffect "rdmsr \0A\09 wrmsr", ""() 10785 ret void 10786} 10787 10788define void @test_rdpmc() optsize { 10789; GENERIC-LABEL: test_rdpmc: 10790; GENERIC: # %bb.0: 10791; GENERIC-NEXT: #APP 10792; GENERIC-NEXT: rdpmc # sched: [100:0.33] 10793; GENERIC-NEXT: #NO_APP 10794; GENERIC-NEXT: retq # sched: [1:1.00] 10795; 10796; ATOM-LABEL: test_rdpmc: 10797; ATOM: # %bb.0: 10798; ATOM-NEXT: #APP 10799; ATOM-NEXT: rdpmc # sched: [46:23.00] 10800; ATOM-NEXT: #NO_APP 10801; ATOM-NEXT: retq # sched: [79:39.50] 10802; 10803; SLM-LABEL: test_rdpmc: 10804; SLM: # %bb.0: 10805; SLM-NEXT: #APP 10806; SLM-NEXT: rdpmc # sched: [100:1.00] 10807; SLM-NEXT: #NO_APP 10808; SLM-NEXT: retq # sched: [4:1.00] 10809; 10810; SANDY-LABEL: test_rdpmc: 10811; SANDY: # %bb.0: 10812; SANDY-NEXT: #APP 10813; SANDY-NEXT: rdpmc # sched: [100:0.33] 10814; SANDY-NEXT: #NO_APP 10815; SANDY-NEXT: retq # sched: [1:1.00] 10816; 10817; HASWELL-LABEL: test_rdpmc: 10818; HASWELL: # %bb.0: 10819; HASWELL-NEXT: #APP 10820; HASWELL-NEXT: rdpmc # sched: [1:8.50] 10821; HASWELL-NEXT: #NO_APP 10822; HASWELL-NEXT: retq # sched: [7:1.00] 10823; 10824; BROADWELL-LABEL: test_rdpmc: 10825; BROADWELL: # %bb.0: 10826; BROADWELL-NEXT: #APP 10827; BROADWELL-NEXT: rdpmc # sched: [100:0.25] 10828; BROADWELL-NEXT: #NO_APP 10829; BROADWELL-NEXT: retq # sched: [7:1.00] 10830; 10831; SKYLAKE-LABEL: test_rdpmc: 10832; SKYLAKE: # %bb.0: 10833; SKYLAKE-NEXT: #APP 10834; SKYLAKE-NEXT: rdpmc # sched: [100:0.25] 10835; SKYLAKE-NEXT: #NO_APP 10836; SKYLAKE-NEXT: retq # sched: [7:1.00] 10837; 10838; SKX-LABEL: test_rdpmc: 10839; SKX: # %bb.0: 10840; SKX-NEXT: #APP 10841; SKX-NEXT: rdpmc # sched: [100:0.25] 10842; SKX-NEXT: #NO_APP 10843; SKX-NEXT: retq # sched: [7:1.00] 10844; 10845; BTVER2-LABEL: test_rdpmc: 10846; BTVER2: # %bb.0: 10847; BTVER2-NEXT: #APP 10848; BTVER2-NEXT: rdpmc # sched: [100:0.50] 10849; BTVER2-NEXT: #NO_APP 10850; BTVER2-NEXT: retq # sched: [4:1.00] 10851; 10852; ZNVER1-LABEL: test_rdpmc: 10853; ZNVER1: # %bb.0: 10854; ZNVER1-NEXT: #APP 10855; ZNVER1-NEXT: rdpmc # sched: [100:0.25] 10856; ZNVER1-NEXT: #NO_APP 10857; ZNVER1-NEXT: retq # sched: [1:0.50] 10858 call void asm sideeffect "rdpmc", ""() 10859 ret void 10860} 10861 10862define void @test_rdtsc_rdtscp() optsize { 10863; GENERIC-LABEL: test_rdtsc_rdtscp: 10864; GENERIC: # %bb.0: 10865; GENERIC-NEXT: #APP 10866; GENERIC-NEXT: rdtsc # sched: [100:0.33] 10867; GENERIC-NEXT: rdtscp # sched: [100:0.33] 10868; GENERIC-NEXT: #NO_APP 10869; GENERIC-NEXT: retq # sched: [1:1.00] 10870; 10871; ATOM-LABEL: test_rdtsc_rdtscp: 10872; ATOM: # %bb.0: 10873; ATOM-NEXT: #APP 10874; ATOM-NEXT: rdtsc # sched: [30:15.00] 10875; ATOM-NEXT: rdtscp # sched: [30:15.00] 10876; ATOM-NEXT: #NO_APP 10877; ATOM-NEXT: retq # sched: [79:39.50] 10878; 10879; SLM-LABEL: test_rdtsc_rdtscp: 10880; SLM: # %bb.0: 10881; SLM-NEXT: #APP 10882; SLM-NEXT: rdtsc # sched: [100:1.00] 10883; SLM-NEXT: rdtscp # sched: [100:1.00] 10884; SLM-NEXT: #NO_APP 10885; SLM-NEXT: retq # sched: [4:1.00] 10886; 10887; SANDY-LABEL: test_rdtsc_rdtscp: 10888; SANDY: # %bb.0: 10889; SANDY-NEXT: #APP 10890; SANDY-NEXT: rdtsc # sched: [100:0.33] 10891; SANDY-NEXT: rdtscp # sched: [100:0.33] 10892; SANDY-NEXT: #NO_APP 10893; SANDY-NEXT: retq # sched: [1:1.00] 10894; 10895; HASWELL-LABEL: test_rdtsc_rdtscp: 10896; HASWELL: # %bb.0: 10897; HASWELL-NEXT: #APP 10898; HASWELL-NEXT: rdtsc # sched: [18:2.00] 10899; HASWELL-NEXT: rdtscp # sched: [42:5.50] 10900; HASWELL-NEXT: #NO_APP 10901; HASWELL-NEXT: retq # sched: [7:1.00] 10902; 10903; BROADWELL-LABEL: test_rdtsc_rdtscp: 10904; BROADWELL: # %bb.0: 10905; BROADWELL-NEXT: #APP 10906; BROADWELL-NEXT: rdtsc # sched: [18:2.00] 10907; BROADWELL-NEXT: rdtscp # sched: [42:5.50] 10908; BROADWELL-NEXT: #NO_APP 10909; BROADWELL-NEXT: retq # sched: [7:1.00] 10910; 10911; SKYLAKE-LABEL: test_rdtsc_rdtscp: 10912; SKYLAKE: # %bb.0: 10913; SKYLAKE-NEXT: #APP 10914; SKYLAKE-NEXT: rdtsc # sched: [18:2.00] 10915; SKYLAKE-NEXT: rdtscp # sched: [42:5.50] 10916; SKYLAKE-NEXT: #NO_APP 10917; SKYLAKE-NEXT: retq # sched: [7:1.00] 10918; 10919; SKX-LABEL: test_rdtsc_rdtscp: 10920; SKX: # %bb.0: 10921; SKX-NEXT: #APP 10922; SKX-NEXT: rdtsc # sched: [18:2.00] 10923; SKX-NEXT: rdtscp # sched: [42:5.50] 10924; SKX-NEXT: #NO_APP 10925; SKX-NEXT: retq # sched: [7:1.00] 10926; 10927; BTVER2-LABEL: test_rdtsc_rdtscp: 10928; BTVER2: # %bb.0: 10929; BTVER2-NEXT: #APP 10930; BTVER2-NEXT: rdtsc # sched: [100:0.50] 10931; BTVER2-NEXT: rdtscp # sched: [100:0.50] 10932; BTVER2-NEXT: #NO_APP 10933; BTVER2-NEXT: retq # sched: [4:1.00] 10934; 10935; ZNVER1-LABEL: test_rdtsc_rdtscp: 10936; ZNVER1: # %bb.0: 10937; ZNVER1-NEXT: #APP 10938; ZNVER1-NEXT: rdtsc # sched: [100:0.25] 10939; ZNVER1-NEXT: rdtscp # sched: [100:0.25] 10940; ZNVER1-NEXT: #NO_APP 10941; ZNVER1-NEXT: retq # sched: [1:0.50] 10942 call void asm sideeffect "rdtsc \0A\09 rdtscp", ""() 10943 ret void 10944} 10945 10946define void @test_ret() optsize { 10947; GENERIC-LABEL: test_ret: 10948; GENERIC: # %bb.0: 10949; GENERIC-NEXT: #APP 10950; GENERIC-NEXT: retq # sched: [1:1.00] 10951; GENERIC-NEXT: retq $4095 # imm = 0xFFF 10952; GENERIC-NEXT: # sched: [6:1.00] 10953; GENERIC-NEXT: lretl # sched: [6:1.00] 10954; GENERIC-NEXT: lretl $4095 # imm = 0xFFF 10955; GENERIC-NEXT: # sched: [6:1.00] 10956; GENERIC-NEXT: #NO_APP 10957; GENERIC-NEXT: retq # sched: [1:1.00] 10958; 10959; ATOM-LABEL: test_ret: 10960; ATOM: # %bb.0: 10961; ATOM-NEXT: #APP 10962; ATOM-NEXT: retq # sched: [79:39.50] 10963; ATOM-NEXT: retq $4095 # imm = 0xFFF 10964; ATOM-NEXT: # sched: [1:1.00] 10965; ATOM-NEXT: lretl # sched: [79:39.50] 10966; ATOM-NEXT: lretl $4095 # imm = 0xFFF 10967; ATOM-NEXT: # sched: [79:39.50] 10968; ATOM-NEXT: #NO_APP 10969; ATOM-NEXT: retq # sched: [79:39.50] 10970; 10971; SLM-LABEL: test_ret: 10972; SLM: # %bb.0: 10973; SLM-NEXT: #APP 10974; SLM-NEXT: retq # sched: [4:1.00] 10975; SLM-NEXT: retq $4095 # imm = 0xFFF 10976; SLM-NEXT: # sched: [4:1.00] 10977; SLM-NEXT: lretl # sched: [4:1.00] 10978; SLM-NEXT: lretl $4095 # imm = 0xFFF 10979; SLM-NEXT: # sched: [4:1.00] 10980; SLM-NEXT: #NO_APP 10981; SLM-NEXT: retq # sched: [4:1.00] 10982; 10983; SANDY-LABEL: test_ret: 10984; SANDY: # %bb.0: 10985; SANDY-NEXT: #APP 10986; SANDY-NEXT: retq # sched: [1:1.00] 10987; SANDY-NEXT: retq $4095 # imm = 0xFFF 10988; SANDY-NEXT: # sched: [6:1.00] 10989; SANDY-NEXT: lretl # sched: [6:1.00] 10990; SANDY-NEXT: lretl $4095 # imm = 0xFFF 10991; SANDY-NEXT: # sched: [6:1.00] 10992; SANDY-NEXT: #NO_APP 10993; SANDY-NEXT: retq # sched: [1:1.00] 10994; 10995; HASWELL-LABEL: test_ret: 10996; HASWELL: # %bb.0: 10997; HASWELL-NEXT: #APP 10998; HASWELL-NEXT: retq # sched: [7:1.00] 10999; HASWELL-NEXT: retq $4095 # imm = 0xFFF 11000; HASWELL-NEXT: # sched: [1:2.00] 11001; HASWELL-NEXT: lretl # sched: [6:0.50] 11002; HASWELL-NEXT: lretl $4095 # imm = 0xFFF 11003; HASWELL-NEXT: # sched: [1:2.00] 11004; HASWELL-NEXT: #NO_APP 11005; HASWELL-NEXT: retq # sched: [7:1.00] 11006; 11007; BROADWELL-LABEL: test_ret: 11008; BROADWELL: # %bb.0: 11009; BROADWELL-NEXT: #APP 11010; BROADWELL-NEXT: retq # sched: [7:1.00] 11011; BROADWELL-NEXT: retq $4095 # imm = 0xFFF 11012; BROADWELL-NEXT: # sched: [6:0.50] 11013; BROADWELL-NEXT: lretl # sched: [6:0.50] 11014; BROADWELL-NEXT: lretl $4095 # imm = 0xFFF 11015; BROADWELL-NEXT: # sched: [6:0.50] 11016; BROADWELL-NEXT: #NO_APP 11017; BROADWELL-NEXT: retq # sched: [7:1.00] 11018; 11019; SKYLAKE-LABEL: test_ret: 11020; SKYLAKE: # %bb.0: 11021; SKYLAKE-NEXT: #APP 11022; SKYLAKE-NEXT: retq # sched: [7:1.00] 11023; SKYLAKE-NEXT: retq $4095 # imm = 0xFFF 11024; SKYLAKE-NEXT: # sched: [6:0.50] 11025; SKYLAKE-NEXT: lretl # sched: [6:0.50] 11026; SKYLAKE-NEXT: lretl $4095 # imm = 0xFFF 11027; SKYLAKE-NEXT: # sched: [6:0.50] 11028; SKYLAKE-NEXT: #NO_APP 11029; SKYLAKE-NEXT: retq # sched: [7:1.00] 11030; 11031; SKX-LABEL: test_ret: 11032; SKX: # %bb.0: 11033; SKX-NEXT: #APP 11034; SKX-NEXT: retq # sched: [7:1.00] 11035; SKX-NEXT: retq $4095 # imm = 0xFFF 11036; SKX-NEXT: # sched: [6:0.50] 11037; SKX-NEXT: lretl # sched: [6:0.50] 11038; SKX-NEXT: lretl $4095 # imm = 0xFFF 11039; SKX-NEXT: # sched: [6:0.50] 11040; SKX-NEXT: #NO_APP 11041; SKX-NEXT: retq # sched: [7:1.00] 11042; 11043; BTVER2-LABEL: test_ret: 11044; BTVER2: # %bb.0: 11045; BTVER2-NEXT: #APP 11046; BTVER2-NEXT: retq # sched: [4:1.00] 11047; BTVER2-NEXT: retq $4095 # imm = 0xFFF 11048; BTVER2-NEXT: # sched: [4:1.00] 11049; BTVER2-NEXT: lretl # sched: [4:1.00] 11050; BTVER2-NEXT: lretl $4095 # imm = 0xFFF 11051; BTVER2-NEXT: # sched: [4:1.00] 11052; BTVER2-NEXT: #NO_APP 11053; BTVER2-NEXT: retq # sched: [4:1.00] 11054; 11055; ZNVER1-LABEL: test_ret: 11056; ZNVER1: # %bb.0: 11057; ZNVER1-NEXT: #APP 11058; ZNVER1-NEXT: retq # sched: [1:0.50] 11059; ZNVER1-NEXT: retq $4095 # imm = 0xFFF 11060; ZNVER1-NEXT: # sched: [5:0.50] 11061; ZNVER1-NEXT: lretl # sched: [1:0.50] 11062; ZNVER1-NEXT: lretl $4095 # imm = 0xFFF 11063; ZNVER1-NEXT: # sched: [5:0.50] 11064; ZNVER1-NEXT: #NO_APP 11065; ZNVER1-NEXT: retq # sched: [1:0.50] 11066 call void asm sideeffect "ret \0A\09 ret $0 \0A\09 lret \0A\09 lret $0", "i"(i16 4095) 11067 ret void 11068} 11069 11070define void @test_rol_ror_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 11071; GENERIC-LABEL: test_rol_ror_8: 11072; GENERIC: # %bb.0: 11073; GENERIC-NEXT: #APP 11074; GENERIC-NEXT: rolb %dil # sched: [2:1.00] 11075; GENERIC-NEXT: rorb %dil # sched: [2:1.00] 11076; GENERIC-NEXT: rolb (%rdx) # sched: [8:1.00] 11077; GENERIC-NEXT: rorb (%rdx) # sched: [8:1.00] 11078; GENERIC-NEXT: rolb $7, %dil # sched: [2:1.00] 11079; GENERIC-NEXT: rorb $7, %dil # sched: [2:1.00] 11080; GENERIC-NEXT: rolb $7, (%rdx) # sched: [8:1.00] 11081; GENERIC-NEXT: rorb $7, (%rdx) # sched: [8:1.00] 11082; GENERIC-NEXT: rolb %cl, %dil # sched: [3:1.50] 11083; GENERIC-NEXT: rorb %cl, %dil # sched: [3:1.50] 11084; GENERIC-NEXT: rolb %cl, (%rdx) # sched: [9:1.50] 11085; GENERIC-NEXT: rorb %cl, (%rdx) # sched: [9:1.50] 11086; GENERIC-NEXT: #NO_APP 11087; GENERIC-NEXT: retq # sched: [1:1.00] 11088; 11089; ATOM-LABEL: test_rol_ror_8: 11090; ATOM: # %bb.0: 11091; ATOM-NEXT: #APP 11092; ATOM-NEXT: rolb %dil # sched: [1:1.00] 11093; ATOM-NEXT: rorb %dil # sched: [1:1.00] 11094; ATOM-NEXT: rolb (%rdx) # sched: [1:1.00] 11095; ATOM-NEXT: rorb (%rdx) # sched: [1:1.00] 11096; ATOM-NEXT: rolb $7, %dil # sched: [1:1.00] 11097; ATOM-NEXT: rorb $7, %dil # sched: [1:1.00] 11098; ATOM-NEXT: rolb $7, (%rdx) # sched: [1:1.00] 11099; ATOM-NEXT: rorb $7, (%rdx) # sched: [1:1.00] 11100; ATOM-NEXT: rolb %cl, %dil # sched: [1:1.00] 11101; ATOM-NEXT: rorb %cl, %dil # sched: [1:1.00] 11102; ATOM-NEXT: rolb %cl, (%rdx) # sched: [1:1.00] 11103; ATOM-NEXT: rorb %cl, (%rdx) # sched: [1:1.00] 11104; ATOM-NEXT: #NO_APP 11105; ATOM-NEXT: retq # sched: [79:39.50] 11106; 11107; SLM-LABEL: test_rol_ror_8: 11108; SLM: # %bb.0: 11109; SLM-NEXT: #APP 11110; SLM-NEXT: rolb %dil # sched: [1:1.00] 11111; SLM-NEXT: rorb %dil # sched: [1:1.00] 11112; SLM-NEXT: rolb (%rdx) # sched: [4:2.00] 11113; SLM-NEXT: rorb (%rdx) # sched: [4:2.00] 11114; SLM-NEXT: rolb $7, %dil # sched: [1:1.00] 11115; SLM-NEXT: rorb $7, %dil # sched: [1:1.00] 11116; SLM-NEXT: rolb $7, (%rdx) # sched: [4:2.00] 11117; SLM-NEXT: rorb $7, (%rdx) # sched: [4:2.00] 11118; SLM-NEXT: rolb %cl, %dil # sched: [1:1.00] 11119; SLM-NEXT: rorb %cl, %dil # sched: [1:1.00] 11120; SLM-NEXT: rolb %cl, (%rdx) # sched: [4:2.00] 11121; SLM-NEXT: rorb %cl, (%rdx) # sched: [4:2.00] 11122; SLM-NEXT: #NO_APP 11123; SLM-NEXT: retq # sched: [4:1.00] 11124; 11125; SANDY-LABEL: test_rol_ror_8: 11126; SANDY: # %bb.0: 11127; SANDY-NEXT: #APP 11128; SANDY-NEXT: rolb %dil # sched: [2:1.00] 11129; SANDY-NEXT: rorb %dil # sched: [2:1.00] 11130; SANDY-NEXT: rolb (%rdx) # sched: [8:1.00] 11131; SANDY-NEXT: rorb (%rdx) # sched: [8:1.00] 11132; SANDY-NEXT: rolb $7, %dil # sched: [2:1.00] 11133; SANDY-NEXT: rorb $7, %dil # sched: [2:1.00] 11134; SANDY-NEXT: rolb $7, (%rdx) # sched: [8:1.00] 11135; SANDY-NEXT: rorb $7, (%rdx) # sched: [8:1.00] 11136; SANDY-NEXT: rolb %cl, %dil # sched: [3:1.50] 11137; SANDY-NEXT: rorb %cl, %dil # sched: [3:1.50] 11138; SANDY-NEXT: rolb %cl, (%rdx) # sched: [9:1.50] 11139; SANDY-NEXT: rorb %cl, (%rdx) # sched: [9:1.50] 11140; SANDY-NEXT: #NO_APP 11141; SANDY-NEXT: retq # sched: [1:1.00] 11142; 11143; HASWELL-LABEL: test_rol_ror_8: 11144; HASWELL: # %bb.0: 11145; HASWELL-NEXT: #APP 11146; HASWELL-NEXT: rolb %dil # sched: [2:1.00] 11147; HASWELL-NEXT: rorb %dil # sched: [2:1.00] 11148; HASWELL-NEXT: rolb (%rdx) # sched: [8:1.00] 11149; HASWELL-NEXT: rorb (%rdx) # sched: [8:1.00] 11150; HASWELL-NEXT: rolb $7, %dil # sched: [2:1.00] 11151; HASWELL-NEXT: rorb $7, %dil # sched: [2:1.00] 11152; HASWELL-NEXT: rolb $7, (%rdx) # sched: [8:1.00] 11153; HASWELL-NEXT: rorb $7, (%rdx) # sched: [8:1.00] 11154; HASWELL-NEXT: rolb %cl, %dil # sched: [3:1.00] 11155; HASWELL-NEXT: rorb %cl, %dil # sched: [3:1.00] 11156; HASWELL-NEXT: rolb %cl, (%rdx) # sched: [9:1.00] 11157; HASWELL-NEXT: rorb %cl, (%rdx) # sched: [9:1.00] 11158; HASWELL-NEXT: #NO_APP 11159; HASWELL-NEXT: retq # sched: [7:1.00] 11160; 11161; BROADWELL-LABEL: test_rol_ror_8: 11162; BROADWELL: # %bb.0: 11163; BROADWELL-NEXT: #APP 11164; BROADWELL-NEXT: rolb %dil # sched: [2:1.00] 11165; BROADWELL-NEXT: rorb %dil # sched: [2:1.00] 11166; BROADWELL-NEXT: rolb (%rdx) # sched: [7:1.00] 11167; BROADWELL-NEXT: rorb (%rdx) # sched: [7:1.00] 11168; BROADWELL-NEXT: rolb $7, %dil # sched: [2:1.00] 11169; BROADWELL-NEXT: rorb $7, %dil # sched: [2:1.00] 11170; BROADWELL-NEXT: rolb $7, (%rdx) # sched: [7:1.00] 11171; BROADWELL-NEXT: rorb $7, (%rdx) # sched: [7:1.00] 11172; BROADWELL-NEXT: rolb %cl, %dil # sched: [3:1.00] 11173; BROADWELL-NEXT: rorb %cl, %dil # sched: [3:1.00] 11174; BROADWELL-NEXT: rolb %cl, (%rdx) # sched: [8:1.00] 11175; BROADWELL-NEXT: rorb %cl, (%rdx) # sched: [8:1.00] 11176; BROADWELL-NEXT: #NO_APP 11177; BROADWELL-NEXT: retq # sched: [7:1.00] 11178; 11179; SKYLAKE-LABEL: test_rol_ror_8: 11180; SKYLAKE: # %bb.0: 11181; SKYLAKE-NEXT: #APP 11182; SKYLAKE-NEXT: rolb %dil # sched: [2:1.00] 11183; SKYLAKE-NEXT: rorb %dil # sched: [2:1.00] 11184; SKYLAKE-NEXT: rolb (%rdx) # sched: [7:1.00] 11185; SKYLAKE-NEXT: rorb (%rdx) # sched: [7:1.00] 11186; SKYLAKE-NEXT: rolb $7, %dil # sched: [2:1.00] 11187; SKYLAKE-NEXT: rorb $7, %dil # sched: [2:1.00] 11188; SKYLAKE-NEXT: rolb $7, (%rdx) # sched: [7:1.00] 11189; SKYLAKE-NEXT: rorb $7, (%rdx) # sched: [7:1.00] 11190; SKYLAKE-NEXT: rolb %cl, %dil # sched: [3:1.50] 11191; SKYLAKE-NEXT: rorb %cl, %dil # sched: [3:1.50] 11192; SKYLAKE-NEXT: rolb %cl, (%rdx) # sched: [8:1.50] 11193; SKYLAKE-NEXT: rorb %cl, (%rdx) # sched: [8:1.50] 11194; SKYLAKE-NEXT: #NO_APP 11195; SKYLAKE-NEXT: retq # sched: [7:1.00] 11196; 11197; SKX-LABEL: test_rol_ror_8: 11198; SKX: # %bb.0: 11199; SKX-NEXT: #APP 11200; SKX-NEXT: rolb %dil # sched: [2:1.00] 11201; SKX-NEXT: rorb %dil # sched: [2:1.00] 11202; SKX-NEXT: rolb (%rdx) # sched: [7:1.00] 11203; SKX-NEXT: rorb (%rdx) # sched: [7:1.00] 11204; SKX-NEXT: rolb $7, %dil # sched: [2:1.00] 11205; SKX-NEXT: rorb $7, %dil # sched: [2:1.00] 11206; SKX-NEXT: rolb $7, (%rdx) # sched: [7:1.00] 11207; SKX-NEXT: rorb $7, (%rdx) # sched: [7:1.00] 11208; SKX-NEXT: rolb %cl, %dil # sched: [3:1.50] 11209; SKX-NEXT: rorb %cl, %dil # sched: [3:1.50] 11210; SKX-NEXT: rolb %cl, (%rdx) # sched: [8:1.50] 11211; SKX-NEXT: rorb %cl, (%rdx) # sched: [8:1.50] 11212; SKX-NEXT: #NO_APP 11213; SKX-NEXT: retq # sched: [7:1.00] 11214; 11215; BTVER2-LABEL: test_rol_ror_8: 11216; BTVER2: # %bb.0: 11217; BTVER2-NEXT: #APP 11218; BTVER2-NEXT: rolb %dil # sched: [1:0.50] 11219; BTVER2-NEXT: rorb %dil # sched: [1:0.50] 11220; BTVER2-NEXT: rolb (%rdx) # sched: [4:1.00] 11221; BTVER2-NEXT: rorb (%rdx) # sched: [4:1.00] 11222; BTVER2-NEXT: rolb $7, %dil # sched: [1:0.50] 11223; BTVER2-NEXT: rorb $7, %dil # sched: [1:0.50] 11224; BTVER2-NEXT: rolb $7, (%rdx) # sched: [4:1.00] 11225; BTVER2-NEXT: rorb $7, (%rdx) # sched: [4:1.00] 11226; BTVER2-NEXT: rolb %cl, %dil # sched: [1:0.50] 11227; BTVER2-NEXT: rorb %cl, %dil # sched: [1:0.50] 11228; BTVER2-NEXT: rolb %cl, (%rdx) # sched: [4:1.00] 11229; BTVER2-NEXT: rorb %cl, (%rdx) # sched: [4:1.00] 11230; BTVER2-NEXT: #NO_APP 11231; BTVER2-NEXT: retq # sched: [4:1.00] 11232; 11233; ZNVER1-LABEL: test_rol_ror_8: 11234; ZNVER1: # %bb.0: 11235; ZNVER1-NEXT: #APP 11236; ZNVER1-NEXT: rolb %dil # sched: [1:0.25] 11237; ZNVER1-NEXT: rorb %dil # sched: [1:0.25] 11238; ZNVER1-NEXT: rolb (%rdx) # sched: [5:1.00] 11239; ZNVER1-NEXT: rorb (%rdx) # sched: [5:1.00] 11240; ZNVER1-NEXT: rolb $7, %dil # sched: [1:0.25] 11241; ZNVER1-NEXT: rorb $7, %dil # sched: [1:0.25] 11242; ZNVER1-NEXT: rolb $7, (%rdx) # sched: [5:1.00] 11243; ZNVER1-NEXT: rorb $7, (%rdx) # sched: [5:1.00] 11244; ZNVER1-NEXT: rolb %cl, %dil # sched: [1:0.25] 11245; ZNVER1-NEXT: rorb %cl, %dil # sched: [1:0.25] 11246; ZNVER1-NEXT: rolb %cl, (%rdx) # sched: [5:1.00] 11247; ZNVER1-NEXT: rorb %cl, (%rdx) # sched: [5:1.00] 11248; ZNVER1-NEXT: #NO_APP 11249; ZNVER1-NEXT: retq # sched: [1:0.50] 11250 call void asm sideeffect "rolb $0 \0A\09 rorb $0 \0A\09 rolb $2 \0A\09 rorb $2 \0A\09 rolb $3, $0 \0A\09 rorb $3, $0 \0A\09 rolb $3, $2 \0A\09 rorb $3, $2 \0A\09 rolb %CL, $0 \0A\09 rorb %CL, $0 \0A\09 rolb %CL, $2 \0A\09 rorb %CL, $2", "r,r,*m,i"(i8 %a0, i8 %a1, i8 *%a2, i8 7) 11251 ret void 11252} 11253define void @test_rol_ror_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 11254; GENERIC-LABEL: test_rol_ror_16: 11255; GENERIC: # %bb.0: 11256; GENERIC-NEXT: #APP 11257; GENERIC-NEXT: rolw %di # sched: [2:1.00] 11258; GENERIC-NEXT: rorw %di # sched: [2:1.00] 11259; GENERIC-NEXT: rolw (%rdx) # sched: [8:1.00] 11260; GENERIC-NEXT: rorw (%rdx) # sched: [8:1.00] 11261; GENERIC-NEXT: rolw $7, %di # sched: [2:1.00] 11262; GENERIC-NEXT: rorw $7, %di # sched: [2:1.00] 11263; GENERIC-NEXT: rolw $7, (%rdx) # sched: [8:1.00] 11264; GENERIC-NEXT: rorw $7, (%rdx) # sched: [8:1.00] 11265; GENERIC-NEXT: rolw %cl, %di # sched: [3:1.50] 11266; GENERIC-NEXT: rorw %cl, %di # sched: [3:1.50] 11267; GENERIC-NEXT: rolw %cl, (%rdx) # sched: [9:1.50] 11268; GENERIC-NEXT: rorw %cl, (%rdx) # sched: [9:1.50] 11269; GENERIC-NEXT: #NO_APP 11270; GENERIC-NEXT: retq # sched: [1:1.00] 11271; 11272; ATOM-LABEL: test_rol_ror_16: 11273; ATOM: # %bb.0: 11274; ATOM-NEXT: #APP 11275; ATOM-NEXT: rolw %di # sched: [1:1.00] 11276; ATOM-NEXT: rorw %di # sched: [1:1.00] 11277; ATOM-NEXT: rolw (%rdx) # sched: [1:1.00] 11278; ATOM-NEXT: rorw (%rdx) # sched: [1:1.00] 11279; ATOM-NEXT: rolw $7, %di # sched: [1:1.00] 11280; ATOM-NEXT: rorw $7, %di # sched: [1:1.00] 11281; ATOM-NEXT: rolw $7, (%rdx) # sched: [1:1.00] 11282; ATOM-NEXT: rorw $7, (%rdx) # sched: [1:1.00] 11283; ATOM-NEXT: rolw %cl, %di # sched: [1:1.00] 11284; ATOM-NEXT: rorw %cl, %di # sched: [1:1.00] 11285; ATOM-NEXT: rolw %cl, (%rdx) # sched: [1:1.00] 11286; ATOM-NEXT: rorw %cl, (%rdx) # sched: [1:1.00] 11287; ATOM-NEXT: #NO_APP 11288; ATOM-NEXT: retq # sched: [79:39.50] 11289; 11290; SLM-LABEL: test_rol_ror_16: 11291; SLM: # %bb.0: 11292; SLM-NEXT: #APP 11293; SLM-NEXT: rolw %di # sched: [1:1.00] 11294; SLM-NEXT: rorw %di # sched: [1:1.00] 11295; SLM-NEXT: rolw (%rdx) # sched: [4:2.00] 11296; SLM-NEXT: rorw (%rdx) # sched: [4:2.00] 11297; SLM-NEXT: rolw $7, %di # sched: [1:1.00] 11298; SLM-NEXT: rorw $7, %di # sched: [1:1.00] 11299; SLM-NEXT: rolw $7, (%rdx) # sched: [4:2.00] 11300; SLM-NEXT: rorw $7, (%rdx) # sched: [4:2.00] 11301; SLM-NEXT: rolw %cl, %di # sched: [1:1.00] 11302; SLM-NEXT: rorw %cl, %di # sched: [1:1.00] 11303; SLM-NEXT: rolw %cl, (%rdx) # sched: [4:2.00] 11304; SLM-NEXT: rorw %cl, (%rdx) # sched: [4:2.00] 11305; SLM-NEXT: #NO_APP 11306; SLM-NEXT: retq # sched: [4:1.00] 11307; 11308; SANDY-LABEL: test_rol_ror_16: 11309; SANDY: # %bb.0: 11310; SANDY-NEXT: #APP 11311; SANDY-NEXT: rolw %di # sched: [2:1.00] 11312; SANDY-NEXT: rorw %di # sched: [2:1.00] 11313; SANDY-NEXT: rolw (%rdx) # sched: [8:1.00] 11314; SANDY-NEXT: rorw (%rdx) # sched: [8:1.00] 11315; SANDY-NEXT: rolw $7, %di # sched: [2:1.00] 11316; SANDY-NEXT: rorw $7, %di # sched: [2:1.00] 11317; SANDY-NEXT: rolw $7, (%rdx) # sched: [8:1.00] 11318; SANDY-NEXT: rorw $7, (%rdx) # sched: [8:1.00] 11319; SANDY-NEXT: rolw %cl, %di # sched: [3:1.50] 11320; SANDY-NEXT: rorw %cl, %di # sched: [3:1.50] 11321; SANDY-NEXT: rolw %cl, (%rdx) # sched: [9:1.50] 11322; SANDY-NEXT: rorw %cl, (%rdx) # sched: [9:1.50] 11323; SANDY-NEXT: #NO_APP 11324; SANDY-NEXT: retq # sched: [1:1.00] 11325; 11326; HASWELL-LABEL: test_rol_ror_16: 11327; HASWELL: # %bb.0: 11328; HASWELL-NEXT: #APP 11329; HASWELL-NEXT: rolw %di # sched: [2:1.00] 11330; HASWELL-NEXT: rorw %di # sched: [2:1.00] 11331; HASWELL-NEXT: rolw (%rdx) # sched: [8:1.00] 11332; HASWELL-NEXT: rorw (%rdx) # sched: [8:1.00] 11333; HASWELL-NEXT: rolw $7, %di # sched: [2:1.00] 11334; HASWELL-NEXT: rorw $7, %di # sched: [2:1.00] 11335; HASWELL-NEXT: rolw $7, (%rdx) # sched: [8:1.00] 11336; HASWELL-NEXT: rorw $7, (%rdx) # sched: [8:1.00] 11337; HASWELL-NEXT: rolw %cl, %di # sched: [3:1.00] 11338; HASWELL-NEXT: rorw %cl, %di # sched: [3:1.00] 11339; HASWELL-NEXT: rolw %cl, (%rdx) # sched: [9:1.00] 11340; HASWELL-NEXT: rorw %cl, (%rdx) # sched: [9:1.00] 11341; HASWELL-NEXT: #NO_APP 11342; HASWELL-NEXT: retq # sched: [7:1.00] 11343; 11344; BROADWELL-LABEL: test_rol_ror_16: 11345; BROADWELL: # %bb.0: 11346; BROADWELL-NEXT: #APP 11347; BROADWELL-NEXT: rolw %di # sched: [2:1.00] 11348; BROADWELL-NEXT: rorw %di # sched: [2:1.00] 11349; BROADWELL-NEXT: rolw (%rdx) # sched: [7:1.00] 11350; BROADWELL-NEXT: rorw (%rdx) # sched: [7:1.00] 11351; BROADWELL-NEXT: rolw $7, %di # sched: [2:1.00] 11352; BROADWELL-NEXT: rorw $7, %di # sched: [2:1.00] 11353; BROADWELL-NEXT: rolw $7, (%rdx) # sched: [7:1.00] 11354; BROADWELL-NEXT: rorw $7, (%rdx) # sched: [7:1.00] 11355; BROADWELL-NEXT: rolw %cl, %di # sched: [3:1.00] 11356; BROADWELL-NEXT: rorw %cl, %di # sched: [3:1.00] 11357; BROADWELL-NEXT: rolw %cl, (%rdx) # sched: [8:1.00] 11358; BROADWELL-NEXT: rorw %cl, (%rdx) # sched: [8:1.00] 11359; BROADWELL-NEXT: #NO_APP 11360; BROADWELL-NEXT: retq # sched: [7:1.00] 11361; 11362; SKYLAKE-LABEL: test_rol_ror_16: 11363; SKYLAKE: # %bb.0: 11364; SKYLAKE-NEXT: #APP 11365; SKYLAKE-NEXT: rolw %di # sched: [2:1.00] 11366; SKYLAKE-NEXT: rorw %di # sched: [2:1.00] 11367; SKYLAKE-NEXT: rolw (%rdx) # sched: [7:1.00] 11368; SKYLAKE-NEXT: rorw (%rdx) # sched: [7:1.00] 11369; SKYLAKE-NEXT: rolw $7, %di # sched: [2:1.00] 11370; SKYLAKE-NEXT: rorw $7, %di # sched: [2:1.00] 11371; SKYLAKE-NEXT: rolw $7, (%rdx) # sched: [7:1.00] 11372; SKYLAKE-NEXT: rorw $7, (%rdx) # sched: [7:1.00] 11373; SKYLAKE-NEXT: rolw %cl, %di # sched: [3:1.50] 11374; SKYLAKE-NEXT: rorw %cl, %di # sched: [3:1.50] 11375; SKYLAKE-NEXT: rolw %cl, (%rdx) # sched: [8:1.50] 11376; SKYLAKE-NEXT: rorw %cl, (%rdx) # sched: [8:1.50] 11377; SKYLAKE-NEXT: #NO_APP 11378; SKYLAKE-NEXT: retq # sched: [7:1.00] 11379; 11380; SKX-LABEL: test_rol_ror_16: 11381; SKX: # %bb.0: 11382; SKX-NEXT: #APP 11383; SKX-NEXT: rolw %di # sched: [2:1.00] 11384; SKX-NEXT: rorw %di # sched: [2:1.00] 11385; SKX-NEXT: rolw (%rdx) # sched: [7:1.00] 11386; SKX-NEXT: rorw (%rdx) # sched: [7:1.00] 11387; SKX-NEXT: rolw $7, %di # sched: [2:1.00] 11388; SKX-NEXT: rorw $7, %di # sched: [2:1.00] 11389; SKX-NEXT: rolw $7, (%rdx) # sched: [7:1.00] 11390; SKX-NEXT: rorw $7, (%rdx) # sched: [7:1.00] 11391; SKX-NEXT: rolw %cl, %di # sched: [3:1.50] 11392; SKX-NEXT: rorw %cl, %di # sched: [3:1.50] 11393; SKX-NEXT: rolw %cl, (%rdx) # sched: [8:1.50] 11394; SKX-NEXT: rorw %cl, (%rdx) # sched: [8:1.50] 11395; SKX-NEXT: #NO_APP 11396; SKX-NEXT: retq # sched: [7:1.00] 11397; 11398; BTVER2-LABEL: test_rol_ror_16: 11399; BTVER2: # %bb.0: 11400; BTVER2-NEXT: #APP 11401; BTVER2-NEXT: rolw %di # sched: [1:0.50] 11402; BTVER2-NEXT: rorw %di # sched: [1:0.50] 11403; BTVER2-NEXT: rolw (%rdx) # sched: [4:1.00] 11404; BTVER2-NEXT: rorw (%rdx) # sched: [4:1.00] 11405; BTVER2-NEXT: rolw $7, %di # sched: [1:0.50] 11406; BTVER2-NEXT: rorw $7, %di # sched: [1:0.50] 11407; BTVER2-NEXT: rolw $7, (%rdx) # sched: [4:1.00] 11408; BTVER2-NEXT: rorw $7, (%rdx) # sched: [4:1.00] 11409; BTVER2-NEXT: rolw %cl, %di # sched: [1:0.50] 11410; BTVER2-NEXT: rorw %cl, %di # sched: [1:0.50] 11411; BTVER2-NEXT: rolw %cl, (%rdx) # sched: [4:1.00] 11412; BTVER2-NEXT: rorw %cl, (%rdx) # sched: [4:1.00] 11413; BTVER2-NEXT: #NO_APP 11414; BTVER2-NEXT: retq # sched: [4:1.00] 11415; 11416; ZNVER1-LABEL: test_rol_ror_16: 11417; ZNVER1: # %bb.0: 11418; ZNVER1-NEXT: #APP 11419; ZNVER1-NEXT: rolw %di # sched: [1:0.25] 11420; ZNVER1-NEXT: rorw %di # sched: [1:0.25] 11421; ZNVER1-NEXT: rolw (%rdx) # sched: [5:1.00] 11422; ZNVER1-NEXT: rorw (%rdx) # sched: [5:1.00] 11423; ZNVER1-NEXT: rolw $7, %di # sched: [1:0.25] 11424; ZNVER1-NEXT: rorw $7, %di # sched: [1:0.25] 11425; ZNVER1-NEXT: rolw $7, (%rdx) # sched: [5:1.00] 11426; ZNVER1-NEXT: rorw $7, (%rdx) # sched: [5:1.00] 11427; ZNVER1-NEXT: rolw %cl, %di # sched: [1:0.25] 11428; ZNVER1-NEXT: rorw %cl, %di # sched: [1:0.25] 11429; ZNVER1-NEXT: rolw %cl, (%rdx) # sched: [5:1.00] 11430; ZNVER1-NEXT: rorw %cl, (%rdx) # sched: [5:1.00] 11431; ZNVER1-NEXT: #NO_APP 11432; ZNVER1-NEXT: retq # sched: [1:0.50] 11433 call void asm sideeffect "rolw $0 \0A\09 rorw $0 \0A\09 rolw $2 \0A\09 rorw $2 \0A\09 rolw $3, $0 \0A\09 rorw $3, $0 \0A\09 rolw $3, $2 \0A\09 rorw $3, $2 \0A\09 rolw %CL, $0 \0A\09 rorw %CL, $0 \0A\09 rolw %CL, $2 \0A\09 rorw %CL, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 11434 ret void 11435} 11436define void @test_rol_ror_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 11437; GENERIC-LABEL: test_rol_ror_32: 11438; GENERIC: # %bb.0: 11439; GENERIC-NEXT: #APP 11440; GENERIC-NEXT: roll %edi # sched: [2:1.00] 11441; GENERIC-NEXT: rorl %edi # sched: [2:1.00] 11442; GENERIC-NEXT: roll (%rdx) # sched: [8:1.00] 11443; GENERIC-NEXT: rorl (%rdx) # sched: [8:1.00] 11444; GENERIC-NEXT: roll $7, %edi # sched: [2:1.00] 11445; GENERIC-NEXT: rorl $7, %edi # sched: [2:1.00] 11446; GENERIC-NEXT: roll $7, (%rdx) # sched: [8:1.00] 11447; GENERIC-NEXT: rorl $7, (%rdx) # sched: [8:1.00] 11448; GENERIC-NEXT: roll %cl, %edi # sched: [3:1.50] 11449; GENERIC-NEXT: rorl %cl, %edi # sched: [3:1.50] 11450; GENERIC-NEXT: roll %cl, (%rdx) # sched: [9:1.50] 11451; GENERIC-NEXT: rorl %cl, (%rdx) # sched: [9:1.50] 11452; GENERIC-NEXT: #NO_APP 11453; GENERIC-NEXT: retq # sched: [1:1.00] 11454; 11455; ATOM-LABEL: test_rol_ror_32: 11456; ATOM: # %bb.0: 11457; ATOM-NEXT: #APP 11458; ATOM-NEXT: roll %edi # sched: [1:1.00] 11459; ATOM-NEXT: rorl %edi # sched: [1:1.00] 11460; ATOM-NEXT: roll (%rdx) # sched: [1:1.00] 11461; ATOM-NEXT: rorl (%rdx) # sched: [1:1.00] 11462; ATOM-NEXT: roll $7, %edi # sched: [1:1.00] 11463; ATOM-NEXT: rorl $7, %edi # sched: [1:1.00] 11464; ATOM-NEXT: roll $7, (%rdx) # sched: [1:1.00] 11465; ATOM-NEXT: rorl $7, (%rdx) # sched: [1:1.00] 11466; ATOM-NEXT: roll %cl, %edi # sched: [1:1.00] 11467; ATOM-NEXT: rorl %cl, %edi # sched: [1:1.00] 11468; ATOM-NEXT: roll %cl, (%rdx) # sched: [1:1.00] 11469; ATOM-NEXT: rorl %cl, (%rdx) # sched: [1:1.00] 11470; ATOM-NEXT: #NO_APP 11471; ATOM-NEXT: retq # sched: [79:39.50] 11472; 11473; SLM-LABEL: test_rol_ror_32: 11474; SLM: # %bb.0: 11475; SLM-NEXT: #APP 11476; SLM-NEXT: roll %edi # sched: [1:1.00] 11477; SLM-NEXT: rorl %edi # sched: [1:1.00] 11478; SLM-NEXT: roll (%rdx) # sched: [4:2.00] 11479; SLM-NEXT: rorl (%rdx) # sched: [4:2.00] 11480; SLM-NEXT: roll $7, %edi # sched: [1:1.00] 11481; SLM-NEXT: rorl $7, %edi # sched: [1:1.00] 11482; SLM-NEXT: roll $7, (%rdx) # sched: [4:2.00] 11483; SLM-NEXT: rorl $7, (%rdx) # sched: [4:2.00] 11484; SLM-NEXT: roll %cl, %edi # sched: [1:1.00] 11485; SLM-NEXT: rorl %cl, %edi # sched: [1:1.00] 11486; SLM-NEXT: roll %cl, (%rdx) # sched: [4:2.00] 11487; SLM-NEXT: rorl %cl, (%rdx) # sched: [4:2.00] 11488; SLM-NEXT: #NO_APP 11489; SLM-NEXT: retq # sched: [4:1.00] 11490; 11491; SANDY-LABEL: test_rol_ror_32: 11492; SANDY: # %bb.0: 11493; SANDY-NEXT: #APP 11494; SANDY-NEXT: roll %edi # sched: [2:1.00] 11495; SANDY-NEXT: rorl %edi # sched: [2:1.00] 11496; SANDY-NEXT: roll (%rdx) # sched: [8:1.00] 11497; SANDY-NEXT: rorl (%rdx) # sched: [8:1.00] 11498; SANDY-NEXT: roll $7, %edi # sched: [2:1.00] 11499; SANDY-NEXT: rorl $7, %edi # sched: [2:1.00] 11500; SANDY-NEXT: roll $7, (%rdx) # sched: [8:1.00] 11501; SANDY-NEXT: rorl $7, (%rdx) # sched: [8:1.00] 11502; SANDY-NEXT: roll %cl, %edi # sched: [3:1.50] 11503; SANDY-NEXT: rorl %cl, %edi # sched: [3:1.50] 11504; SANDY-NEXT: roll %cl, (%rdx) # sched: [9:1.50] 11505; SANDY-NEXT: rorl %cl, (%rdx) # sched: [9:1.50] 11506; SANDY-NEXT: #NO_APP 11507; SANDY-NEXT: retq # sched: [1:1.00] 11508; 11509; HASWELL-LABEL: test_rol_ror_32: 11510; HASWELL: # %bb.0: 11511; HASWELL-NEXT: #APP 11512; HASWELL-NEXT: roll %edi # sched: [2:1.00] 11513; HASWELL-NEXT: rorl %edi # sched: [2:1.00] 11514; HASWELL-NEXT: roll (%rdx) # sched: [8:1.00] 11515; HASWELL-NEXT: rorl (%rdx) # sched: [8:1.00] 11516; HASWELL-NEXT: roll $7, %edi # sched: [2:1.00] 11517; HASWELL-NEXT: rorl $7, %edi # sched: [2:1.00] 11518; HASWELL-NEXT: roll $7, (%rdx) # sched: [8:1.00] 11519; HASWELL-NEXT: rorl $7, (%rdx) # sched: [8:1.00] 11520; HASWELL-NEXT: roll %cl, %edi # sched: [3:1.00] 11521; HASWELL-NEXT: rorl %cl, %edi # sched: [3:1.00] 11522; HASWELL-NEXT: roll %cl, (%rdx) # sched: [9:1.00] 11523; HASWELL-NEXT: rorl %cl, (%rdx) # sched: [9:1.00] 11524; HASWELL-NEXT: #NO_APP 11525; HASWELL-NEXT: retq # sched: [7:1.00] 11526; 11527; BROADWELL-LABEL: test_rol_ror_32: 11528; BROADWELL: # %bb.0: 11529; BROADWELL-NEXT: #APP 11530; BROADWELL-NEXT: roll %edi # sched: [2:1.00] 11531; BROADWELL-NEXT: rorl %edi # sched: [2:1.00] 11532; BROADWELL-NEXT: roll (%rdx) # sched: [7:1.00] 11533; BROADWELL-NEXT: rorl (%rdx) # sched: [7:1.00] 11534; BROADWELL-NEXT: roll $7, %edi # sched: [2:1.00] 11535; BROADWELL-NEXT: rorl $7, %edi # sched: [2:1.00] 11536; BROADWELL-NEXT: roll $7, (%rdx) # sched: [7:1.00] 11537; BROADWELL-NEXT: rorl $7, (%rdx) # sched: [7:1.00] 11538; BROADWELL-NEXT: roll %cl, %edi # sched: [3:1.00] 11539; BROADWELL-NEXT: rorl %cl, %edi # sched: [3:1.00] 11540; BROADWELL-NEXT: roll %cl, (%rdx) # sched: [8:1.00] 11541; BROADWELL-NEXT: rorl %cl, (%rdx) # sched: [8:1.00] 11542; BROADWELL-NEXT: #NO_APP 11543; BROADWELL-NEXT: retq # sched: [7:1.00] 11544; 11545; SKYLAKE-LABEL: test_rol_ror_32: 11546; SKYLAKE: # %bb.0: 11547; SKYLAKE-NEXT: #APP 11548; SKYLAKE-NEXT: roll %edi # sched: [2:1.00] 11549; SKYLAKE-NEXT: rorl %edi # sched: [2:1.00] 11550; SKYLAKE-NEXT: roll (%rdx) # sched: [7:1.00] 11551; SKYLAKE-NEXT: rorl (%rdx) # sched: [7:1.00] 11552; SKYLAKE-NEXT: roll $7, %edi # sched: [2:1.00] 11553; SKYLAKE-NEXT: rorl $7, %edi # sched: [2:1.00] 11554; SKYLAKE-NEXT: roll $7, (%rdx) # sched: [7:1.00] 11555; SKYLAKE-NEXT: rorl $7, (%rdx) # sched: [7:1.00] 11556; SKYLAKE-NEXT: roll %cl, %edi # sched: [3:1.50] 11557; SKYLAKE-NEXT: rorl %cl, %edi # sched: [3:1.50] 11558; SKYLAKE-NEXT: roll %cl, (%rdx) # sched: [8:1.50] 11559; SKYLAKE-NEXT: rorl %cl, (%rdx) # sched: [8:1.50] 11560; SKYLAKE-NEXT: #NO_APP 11561; SKYLAKE-NEXT: retq # sched: [7:1.00] 11562; 11563; SKX-LABEL: test_rol_ror_32: 11564; SKX: # %bb.0: 11565; SKX-NEXT: #APP 11566; SKX-NEXT: roll %edi # sched: [2:1.00] 11567; SKX-NEXT: rorl %edi # sched: [2:1.00] 11568; SKX-NEXT: roll (%rdx) # sched: [7:1.00] 11569; SKX-NEXT: rorl (%rdx) # sched: [7:1.00] 11570; SKX-NEXT: roll $7, %edi # sched: [2:1.00] 11571; SKX-NEXT: rorl $7, %edi # sched: [2:1.00] 11572; SKX-NEXT: roll $7, (%rdx) # sched: [7:1.00] 11573; SKX-NEXT: rorl $7, (%rdx) # sched: [7:1.00] 11574; SKX-NEXT: roll %cl, %edi # sched: [3:1.50] 11575; SKX-NEXT: rorl %cl, %edi # sched: [3:1.50] 11576; SKX-NEXT: roll %cl, (%rdx) # sched: [8:1.50] 11577; SKX-NEXT: rorl %cl, (%rdx) # sched: [8:1.50] 11578; SKX-NEXT: #NO_APP 11579; SKX-NEXT: retq # sched: [7:1.00] 11580; 11581; BTVER2-LABEL: test_rol_ror_32: 11582; BTVER2: # %bb.0: 11583; BTVER2-NEXT: #APP 11584; BTVER2-NEXT: roll %edi # sched: [1:0.50] 11585; BTVER2-NEXT: rorl %edi # sched: [1:0.50] 11586; BTVER2-NEXT: roll (%rdx) # sched: [4:1.00] 11587; BTVER2-NEXT: rorl (%rdx) # sched: [4:1.00] 11588; BTVER2-NEXT: roll $7, %edi # sched: [1:0.50] 11589; BTVER2-NEXT: rorl $7, %edi # sched: [1:0.50] 11590; BTVER2-NEXT: roll $7, (%rdx) # sched: [4:1.00] 11591; BTVER2-NEXT: rorl $7, (%rdx) # sched: [4:1.00] 11592; BTVER2-NEXT: roll %cl, %edi # sched: [1:0.50] 11593; BTVER2-NEXT: rorl %cl, %edi # sched: [1:0.50] 11594; BTVER2-NEXT: roll %cl, (%rdx) # sched: [4:1.00] 11595; BTVER2-NEXT: rorl %cl, (%rdx) # sched: [4:1.00] 11596; BTVER2-NEXT: #NO_APP 11597; BTVER2-NEXT: retq # sched: [4:1.00] 11598; 11599; ZNVER1-LABEL: test_rol_ror_32: 11600; ZNVER1: # %bb.0: 11601; ZNVER1-NEXT: #APP 11602; ZNVER1-NEXT: roll %edi # sched: [1:0.25] 11603; ZNVER1-NEXT: rorl %edi # sched: [1:0.25] 11604; ZNVER1-NEXT: roll (%rdx) # sched: [5:1.00] 11605; ZNVER1-NEXT: rorl (%rdx) # sched: [5:1.00] 11606; ZNVER1-NEXT: roll $7, %edi # sched: [1:0.25] 11607; ZNVER1-NEXT: rorl $7, %edi # sched: [1:0.25] 11608; ZNVER1-NEXT: roll $7, (%rdx) # sched: [5:1.00] 11609; ZNVER1-NEXT: rorl $7, (%rdx) # sched: [5:1.00] 11610; ZNVER1-NEXT: roll %cl, %edi # sched: [1:0.25] 11611; ZNVER1-NEXT: rorl %cl, %edi # sched: [1:0.25] 11612; ZNVER1-NEXT: roll %cl, (%rdx) # sched: [5:1.00] 11613; ZNVER1-NEXT: rorl %cl, (%rdx) # sched: [5:1.00] 11614; ZNVER1-NEXT: #NO_APP 11615; ZNVER1-NEXT: retq # sched: [1:0.50] 11616 call void asm sideeffect "roll $0 \0A\09 rorl $0 \0A\09 roll $2 \0A\09 rorl $2 \0A\09 roll $3, $0 \0A\09 rorl $3, $0 \0A\09 roll $3, $2 \0A\09 rorl $3, $2 \0A\09 roll %CL, $0 \0A\09 rorl %CL, $0 \0A\09 roll %CL, $2 \0A\09 rorl %CL, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 11617 ret void 11618} 11619define void @test_rol_ror_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 11620; GENERIC-LABEL: test_rol_ror_64: 11621; GENERIC: # %bb.0: 11622; GENERIC-NEXT: #APP 11623; GENERIC-NEXT: rolq %rdi # sched: [2:1.00] 11624; GENERIC-NEXT: rorq %rdi # sched: [2:1.00] 11625; GENERIC-NEXT: rolq (%rdx) # sched: [8:1.00] 11626; GENERIC-NEXT: rorq (%rdx) # sched: [8:1.00] 11627; GENERIC-NEXT: rolq $7, %rdi # sched: [2:1.00] 11628; GENERIC-NEXT: rorq $7, %rdi # sched: [2:1.00] 11629; GENERIC-NEXT: rolq $7, (%rdx) # sched: [8:1.00] 11630; GENERIC-NEXT: rorq $7, (%rdx) # sched: [8:1.00] 11631; GENERIC-NEXT: rolq %cl, %rdi # sched: [3:1.50] 11632; GENERIC-NEXT: rorq %cl, %rdi # sched: [3:1.50] 11633; GENERIC-NEXT: rolq %cl, (%rdx) # sched: [9:1.50] 11634; GENERIC-NEXT: rorq %cl, (%rdx) # sched: [9:1.50] 11635; GENERIC-NEXT: #NO_APP 11636; GENERIC-NEXT: retq # sched: [1:1.00] 11637; 11638; ATOM-LABEL: test_rol_ror_64: 11639; ATOM: # %bb.0: 11640; ATOM-NEXT: #APP 11641; ATOM-NEXT: rolq %rdi # sched: [1:1.00] 11642; ATOM-NEXT: rorq %rdi # sched: [1:1.00] 11643; ATOM-NEXT: rolq (%rdx) # sched: [1:1.00] 11644; ATOM-NEXT: rorq (%rdx) # sched: [1:1.00] 11645; ATOM-NEXT: rolq $7, %rdi # sched: [1:1.00] 11646; ATOM-NEXT: rorq $7, %rdi # sched: [1:1.00] 11647; ATOM-NEXT: rolq $7, (%rdx) # sched: [1:1.00] 11648; ATOM-NEXT: rorq $7, (%rdx) # sched: [1:1.00] 11649; ATOM-NEXT: rolq %cl, %rdi # sched: [1:1.00] 11650; ATOM-NEXT: rorq %cl, %rdi # sched: [1:1.00] 11651; ATOM-NEXT: rolq %cl, (%rdx) # sched: [1:1.00] 11652; ATOM-NEXT: rorq %cl, (%rdx) # sched: [1:1.00] 11653; ATOM-NEXT: #NO_APP 11654; ATOM-NEXT: retq # sched: [79:39.50] 11655; 11656; SLM-LABEL: test_rol_ror_64: 11657; SLM: # %bb.0: 11658; SLM-NEXT: #APP 11659; SLM-NEXT: rolq %rdi # sched: [1:1.00] 11660; SLM-NEXT: rorq %rdi # sched: [1:1.00] 11661; SLM-NEXT: rolq (%rdx) # sched: [4:2.00] 11662; SLM-NEXT: rorq (%rdx) # sched: [4:2.00] 11663; SLM-NEXT: rolq $7, %rdi # sched: [1:1.00] 11664; SLM-NEXT: rorq $7, %rdi # sched: [1:1.00] 11665; SLM-NEXT: rolq $7, (%rdx) # sched: [4:2.00] 11666; SLM-NEXT: rorq $7, (%rdx) # sched: [4:2.00] 11667; SLM-NEXT: rolq %cl, %rdi # sched: [1:1.00] 11668; SLM-NEXT: rorq %cl, %rdi # sched: [1:1.00] 11669; SLM-NEXT: rolq %cl, (%rdx) # sched: [4:2.00] 11670; SLM-NEXT: rorq %cl, (%rdx) # sched: [4:2.00] 11671; SLM-NEXT: #NO_APP 11672; SLM-NEXT: retq # sched: [4:1.00] 11673; 11674; SANDY-LABEL: test_rol_ror_64: 11675; SANDY: # %bb.0: 11676; SANDY-NEXT: #APP 11677; SANDY-NEXT: rolq %rdi # sched: [2:1.00] 11678; SANDY-NEXT: rorq %rdi # sched: [2:1.00] 11679; SANDY-NEXT: rolq (%rdx) # sched: [8:1.00] 11680; SANDY-NEXT: rorq (%rdx) # sched: [8:1.00] 11681; SANDY-NEXT: rolq $7, %rdi # sched: [2:1.00] 11682; SANDY-NEXT: rorq $7, %rdi # sched: [2:1.00] 11683; SANDY-NEXT: rolq $7, (%rdx) # sched: [8:1.00] 11684; SANDY-NEXT: rorq $7, (%rdx) # sched: [8:1.00] 11685; SANDY-NEXT: rolq %cl, %rdi # sched: [3:1.50] 11686; SANDY-NEXT: rorq %cl, %rdi # sched: [3:1.50] 11687; SANDY-NEXT: rolq %cl, (%rdx) # sched: [9:1.50] 11688; SANDY-NEXT: rorq %cl, (%rdx) # sched: [9:1.50] 11689; SANDY-NEXT: #NO_APP 11690; SANDY-NEXT: retq # sched: [1:1.00] 11691; 11692; HASWELL-LABEL: test_rol_ror_64: 11693; HASWELL: # %bb.0: 11694; HASWELL-NEXT: #APP 11695; HASWELL-NEXT: rolq %rdi # sched: [2:1.00] 11696; HASWELL-NEXT: rorq %rdi # sched: [2:1.00] 11697; HASWELL-NEXT: rolq (%rdx) # sched: [8:1.00] 11698; HASWELL-NEXT: rorq (%rdx) # sched: [8:1.00] 11699; HASWELL-NEXT: rolq $7, %rdi # sched: [2:1.00] 11700; HASWELL-NEXT: rorq $7, %rdi # sched: [2:1.00] 11701; HASWELL-NEXT: rolq $7, (%rdx) # sched: [8:1.00] 11702; HASWELL-NEXT: rorq $7, (%rdx) # sched: [8:1.00] 11703; HASWELL-NEXT: rolq %cl, %rdi # sched: [3:1.00] 11704; HASWELL-NEXT: rorq %cl, %rdi # sched: [3:1.00] 11705; HASWELL-NEXT: rolq %cl, (%rdx) # sched: [9:1.00] 11706; HASWELL-NEXT: rorq %cl, (%rdx) # sched: [9:1.00] 11707; HASWELL-NEXT: #NO_APP 11708; HASWELL-NEXT: retq # sched: [7:1.00] 11709; 11710; BROADWELL-LABEL: test_rol_ror_64: 11711; BROADWELL: # %bb.0: 11712; BROADWELL-NEXT: #APP 11713; BROADWELL-NEXT: rolq %rdi # sched: [2:1.00] 11714; BROADWELL-NEXT: rorq %rdi # sched: [2:1.00] 11715; BROADWELL-NEXT: rolq (%rdx) # sched: [7:1.00] 11716; BROADWELL-NEXT: rorq (%rdx) # sched: [7:1.00] 11717; BROADWELL-NEXT: rolq $7, %rdi # sched: [2:1.00] 11718; BROADWELL-NEXT: rorq $7, %rdi # sched: [2:1.00] 11719; BROADWELL-NEXT: rolq $7, (%rdx) # sched: [7:1.00] 11720; BROADWELL-NEXT: rorq $7, (%rdx) # sched: [7:1.00] 11721; BROADWELL-NEXT: rolq %cl, %rdi # sched: [3:1.00] 11722; BROADWELL-NEXT: rorq %cl, %rdi # sched: [3:1.00] 11723; BROADWELL-NEXT: rolq %cl, (%rdx) # sched: [8:1.00] 11724; BROADWELL-NEXT: rorq %cl, (%rdx) # sched: [8:1.00] 11725; BROADWELL-NEXT: #NO_APP 11726; BROADWELL-NEXT: retq # sched: [7:1.00] 11727; 11728; SKYLAKE-LABEL: test_rol_ror_64: 11729; SKYLAKE: # %bb.0: 11730; SKYLAKE-NEXT: #APP 11731; SKYLAKE-NEXT: rolq %rdi # sched: [2:1.00] 11732; SKYLAKE-NEXT: rorq %rdi # sched: [2:1.00] 11733; SKYLAKE-NEXT: rolq (%rdx) # sched: [7:1.00] 11734; SKYLAKE-NEXT: rorq (%rdx) # sched: [7:1.00] 11735; SKYLAKE-NEXT: rolq $7, %rdi # sched: [2:1.00] 11736; SKYLAKE-NEXT: rorq $7, %rdi # sched: [2:1.00] 11737; SKYLAKE-NEXT: rolq $7, (%rdx) # sched: [7:1.00] 11738; SKYLAKE-NEXT: rorq $7, (%rdx) # sched: [7:1.00] 11739; SKYLAKE-NEXT: rolq %cl, %rdi # sched: [3:1.50] 11740; SKYLAKE-NEXT: rorq %cl, %rdi # sched: [3:1.50] 11741; SKYLAKE-NEXT: rolq %cl, (%rdx) # sched: [8:1.50] 11742; SKYLAKE-NEXT: rorq %cl, (%rdx) # sched: [8:1.50] 11743; SKYLAKE-NEXT: #NO_APP 11744; SKYLAKE-NEXT: retq # sched: [7:1.00] 11745; 11746; SKX-LABEL: test_rol_ror_64: 11747; SKX: # %bb.0: 11748; SKX-NEXT: #APP 11749; SKX-NEXT: rolq %rdi # sched: [2:1.00] 11750; SKX-NEXT: rorq %rdi # sched: [2:1.00] 11751; SKX-NEXT: rolq (%rdx) # sched: [7:1.00] 11752; SKX-NEXT: rorq (%rdx) # sched: [7:1.00] 11753; SKX-NEXT: rolq $7, %rdi # sched: [2:1.00] 11754; SKX-NEXT: rorq $7, %rdi # sched: [2:1.00] 11755; SKX-NEXT: rolq $7, (%rdx) # sched: [7:1.00] 11756; SKX-NEXT: rorq $7, (%rdx) # sched: [7:1.00] 11757; SKX-NEXT: rolq %cl, %rdi # sched: [3:1.50] 11758; SKX-NEXT: rorq %cl, %rdi # sched: [3:1.50] 11759; SKX-NEXT: rolq %cl, (%rdx) # sched: [8:1.50] 11760; SKX-NEXT: rorq %cl, (%rdx) # sched: [8:1.50] 11761; SKX-NEXT: #NO_APP 11762; SKX-NEXT: retq # sched: [7:1.00] 11763; 11764; BTVER2-LABEL: test_rol_ror_64: 11765; BTVER2: # %bb.0: 11766; BTVER2-NEXT: #APP 11767; BTVER2-NEXT: rolq %rdi # sched: [1:0.50] 11768; BTVER2-NEXT: rorq %rdi # sched: [1:0.50] 11769; BTVER2-NEXT: rolq (%rdx) # sched: [4:1.00] 11770; BTVER2-NEXT: rorq (%rdx) # sched: [4:1.00] 11771; BTVER2-NEXT: rolq $7, %rdi # sched: [1:0.50] 11772; BTVER2-NEXT: rorq $7, %rdi # sched: [1:0.50] 11773; BTVER2-NEXT: rolq $7, (%rdx) # sched: [4:1.00] 11774; BTVER2-NEXT: rorq $7, (%rdx) # sched: [4:1.00] 11775; BTVER2-NEXT: rolq %cl, %rdi # sched: [1:0.50] 11776; BTVER2-NEXT: rorq %cl, %rdi # sched: [1:0.50] 11777; BTVER2-NEXT: rolq %cl, (%rdx) # sched: [4:1.00] 11778; BTVER2-NEXT: rorq %cl, (%rdx) # sched: [4:1.00] 11779; BTVER2-NEXT: #NO_APP 11780; BTVER2-NEXT: retq # sched: [4:1.00] 11781; 11782; ZNVER1-LABEL: test_rol_ror_64: 11783; ZNVER1: # %bb.0: 11784; ZNVER1-NEXT: #APP 11785; ZNVER1-NEXT: rolq %rdi # sched: [1:0.25] 11786; ZNVER1-NEXT: rorq %rdi # sched: [1:0.25] 11787; ZNVER1-NEXT: rolq (%rdx) # sched: [5:1.00] 11788; ZNVER1-NEXT: rorq (%rdx) # sched: [5:1.00] 11789; ZNVER1-NEXT: rolq $7, %rdi # sched: [1:0.25] 11790; ZNVER1-NEXT: rorq $7, %rdi # sched: [1:0.25] 11791; ZNVER1-NEXT: rolq $7, (%rdx) # sched: [5:1.00] 11792; ZNVER1-NEXT: rorq $7, (%rdx) # sched: [5:1.00] 11793; ZNVER1-NEXT: rolq %cl, %rdi # sched: [1:0.25] 11794; ZNVER1-NEXT: rorq %cl, %rdi # sched: [1:0.25] 11795; ZNVER1-NEXT: rolq %cl, (%rdx) # sched: [5:1.00] 11796; ZNVER1-NEXT: rorq %cl, (%rdx) # sched: [5:1.00] 11797; ZNVER1-NEXT: #NO_APP 11798; ZNVER1-NEXT: retq # sched: [1:0.50] 11799 call void asm sideeffect "rolq $0 \0A\09 rorq $0 \0A\09 rolq $2 \0A\09 rorq $2 \0A\09 rolq $3, $0 \0A\09 rorq $3, $0 \0A\09 rolq $3, $2 \0A\09 rorq $3, $2 \0A\09 rolq %CL, $0 \0A\09 rorq %CL, $0 \0A\09 rolq %CL, $2 \0A\09 rorq %CL, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 11800 ret void 11801} 11802 11803define void @test_sar_shl_shr_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 11804; GENERIC-LABEL: test_sar_shl_shr_8: 11805; GENERIC: # %bb.0: 11806; GENERIC-NEXT: #APP 11807; GENERIC-NEXT: sarb %dil # sched: [1:0.50] 11808; GENERIC-NEXT: shlb %dil # sched: [1:0.50] 11809; GENERIC-NEXT: shrb %dil # sched: [1:0.50] 11810; GENERIC-NEXT: sarb (%rdx) # sched: [7:1.00] 11811; GENERIC-NEXT: shlb (%rdx) # sched: [7:1.00] 11812; GENERIC-NEXT: shrb (%rdx) # sched: [7:1.00] 11813; GENERIC-NEXT: sarb $7, %dil # sched: [1:0.50] 11814; GENERIC-NEXT: shlb $7, %dil # sched: [1:0.50] 11815; GENERIC-NEXT: shrb $7, %dil # sched: [1:0.50] 11816; GENERIC-NEXT: sarb $7, (%rdx) # sched: [7:1.00] 11817; GENERIC-NEXT: shlb $7, (%rdx) # sched: [7:1.00] 11818; GENERIC-NEXT: shrb $7, (%rdx) # sched: [7:1.00] 11819; GENERIC-NEXT: sarb %cl, %dil # sched: [3:1.50] 11820; GENERIC-NEXT: shlb %cl, %dil # sched: [3:1.50] 11821; GENERIC-NEXT: shrb %cl, %dil # sched: [3:1.50] 11822; GENERIC-NEXT: sarb %cl, (%rdx) # sched: [9:1.50] 11823; GENERIC-NEXT: shlb %cl, (%rdx) # sched: [9:1.50] 11824; GENERIC-NEXT: shrb %cl, (%rdx) # sched: [9:1.50] 11825; GENERIC-NEXT: #NO_APP 11826; GENERIC-NEXT: retq # sched: [1:1.00] 11827; 11828; ATOM-LABEL: test_sar_shl_shr_8: 11829; ATOM: # %bb.0: 11830; ATOM-NEXT: #APP 11831; ATOM-NEXT: sarb %dil # sched: [1:1.00] 11832; ATOM-NEXT: shlb %dil # sched: [1:1.00] 11833; ATOM-NEXT: shrb %dil # sched: [1:1.00] 11834; ATOM-NEXT: sarb (%rdx) # sched: [1:1.00] 11835; ATOM-NEXT: shlb (%rdx) # sched: [1:1.00] 11836; ATOM-NEXT: shrb (%rdx) # sched: [1:1.00] 11837; ATOM-NEXT: sarb $7, %dil # sched: [1:1.00] 11838; ATOM-NEXT: shlb $7, %dil # sched: [1:1.00] 11839; ATOM-NEXT: shrb $7, %dil # sched: [1:1.00] 11840; ATOM-NEXT: sarb $7, (%rdx) # sched: [1:1.00] 11841; ATOM-NEXT: shlb $7, (%rdx) # sched: [1:1.00] 11842; ATOM-NEXT: shrb $7, (%rdx) # sched: [1:1.00] 11843; ATOM-NEXT: sarb %cl, %dil # sched: [1:1.00] 11844; ATOM-NEXT: shlb %cl, %dil # sched: [1:1.00] 11845; ATOM-NEXT: shrb %cl, %dil # sched: [1:1.00] 11846; ATOM-NEXT: sarb %cl, (%rdx) # sched: [1:1.00] 11847; ATOM-NEXT: shlb %cl, (%rdx) # sched: [1:1.00] 11848; ATOM-NEXT: shrb %cl, (%rdx) # sched: [1:1.00] 11849; ATOM-NEXT: #NO_APP 11850; ATOM-NEXT: retq # sched: [79:39.50] 11851; 11852; SLM-LABEL: test_sar_shl_shr_8: 11853; SLM: # %bb.0: 11854; SLM-NEXT: #APP 11855; SLM-NEXT: sarb %dil # sched: [1:1.00] 11856; SLM-NEXT: shlb %dil # sched: [1:1.00] 11857; SLM-NEXT: shrb %dil # sched: [1:1.00] 11858; SLM-NEXT: sarb (%rdx) # sched: [4:2.00] 11859; SLM-NEXT: shlb (%rdx) # sched: [4:2.00] 11860; SLM-NEXT: shrb (%rdx) # sched: [4:2.00] 11861; SLM-NEXT: sarb $7, %dil # sched: [1:1.00] 11862; SLM-NEXT: shlb $7, %dil # sched: [1:1.00] 11863; SLM-NEXT: shrb $7, %dil # sched: [1:1.00] 11864; SLM-NEXT: sarb $7, (%rdx) # sched: [4:2.00] 11865; SLM-NEXT: shlb $7, (%rdx) # sched: [4:2.00] 11866; SLM-NEXT: shrb $7, (%rdx) # sched: [4:2.00] 11867; SLM-NEXT: sarb %cl, %dil # sched: [1:1.00] 11868; SLM-NEXT: shlb %cl, %dil # sched: [1:1.00] 11869; SLM-NEXT: shrb %cl, %dil # sched: [1:1.00] 11870; SLM-NEXT: sarb %cl, (%rdx) # sched: [4:2.00] 11871; SLM-NEXT: shlb %cl, (%rdx) # sched: [4:2.00] 11872; SLM-NEXT: shrb %cl, (%rdx) # sched: [4:2.00] 11873; SLM-NEXT: #NO_APP 11874; SLM-NEXT: retq # sched: [4:1.00] 11875; 11876; SANDY-LABEL: test_sar_shl_shr_8: 11877; SANDY: # %bb.0: 11878; SANDY-NEXT: #APP 11879; SANDY-NEXT: sarb %dil # sched: [1:0.50] 11880; SANDY-NEXT: shlb %dil # sched: [1:0.50] 11881; SANDY-NEXT: shrb %dil # sched: [1:0.50] 11882; SANDY-NEXT: sarb (%rdx) # sched: [7:1.00] 11883; SANDY-NEXT: shlb (%rdx) # sched: [7:1.00] 11884; SANDY-NEXT: shrb (%rdx) # sched: [7:1.00] 11885; SANDY-NEXT: sarb $7, %dil # sched: [1:0.50] 11886; SANDY-NEXT: shlb $7, %dil # sched: [1:0.50] 11887; SANDY-NEXT: shrb $7, %dil # sched: [1:0.50] 11888; SANDY-NEXT: sarb $7, (%rdx) # sched: [7:1.00] 11889; SANDY-NEXT: shlb $7, (%rdx) # sched: [7:1.00] 11890; SANDY-NEXT: shrb $7, (%rdx) # sched: [7:1.00] 11891; SANDY-NEXT: sarb %cl, %dil # sched: [3:1.50] 11892; SANDY-NEXT: shlb %cl, %dil # sched: [3:1.50] 11893; SANDY-NEXT: shrb %cl, %dil # sched: [3:1.50] 11894; SANDY-NEXT: sarb %cl, (%rdx) # sched: [9:1.50] 11895; SANDY-NEXT: shlb %cl, (%rdx) # sched: [9:1.50] 11896; SANDY-NEXT: shrb %cl, (%rdx) # sched: [9:1.50] 11897; SANDY-NEXT: #NO_APP 11898; SANDY-NEXT: retq # sched: [1:1.00] 11899; 11900; HASWELL-LABEL: test_sar_shl_shr_8: 11901; HASWELL: # %bb.0: 11902; HASWELL-NEXT: #APP 11903; HASWELL-NEXT: sarb %dil # sched: [1:0.50] 11904; HASWELL-NEXT: shlb %dil # sched: [1:0.50] 11905; HASWELL-NEXT: shrb %dil # sched: [1:0.50] 11906; HASWELL-NEXT: sarb (%rdx) # sched: [7:1.00] 11907; HASWELL-NEXT: shlb (%rdx) # sched: [7:1.00] 11908; HASWELL-NEXT: shrb (%rdx) # sched: [7:1.00] 11909; HASWELL-NEXT: sarb $7, %dil # sched: [1:0.50] 11910; HASWELL-NEXT: shlb $7, %dil # sched: [1:0.50] 11911; HASWELL-NEXT: shrb $7, %dil # sched: [1:0.50] 11912; HASWELL-NEXT: sarb $7, (%rdx) # sched: [7:1.00] 11913; HASWELL-NEXT: shlb $7, (%rdx) # sched: [7:1.00] 11914; HASWELL-NEXT: shrb $7, (%rdx) # sched: [7:1.00] 11915; HASWELL-NEXT: sarb %cl, %dil # sched: [3:1.00] 11916; HASWELL-NEXT: shlb %cl, %dil # sched: [3:1.00] 11917; HASWELL-NEXT: shrb %cl, %dil # sched: [3:1.00] 11918; HASWELL-NEXT: sarb %cl, (%rdx) # sched: [9:1.00] 11919; HASWELL-NEXT: shlb %cl, (%rdx) # sched: [9:1.00] 11920; HASWELL-NEXT: shrb %cl, (%rdx) # sched: [9:1.00] 11921; HASWELL-NEXT: #NO_APP 11922; HASWELL-NEXT: retq # sched: [7:1.00] 11923; 11924; BROADWELL-LABEL: test_sar_shl_shr_8: 11925; BROADWELL: # %bb.0: 11926; BROADWELL-NEXT: #APP 11927; BROADWELL-NEXT: sarb %dil # sched: [1:0.50] 11928; BROADWELL-NEXT: shlb %dil # sched: [1:0.50] 11929; BROADWELL-NEXT: shrb %dil # sched: [1:0.50] 11930; BROADWELL-NEXT: sarb (%rdx) # sched: [6:1.00] 11931; BROADWELL-NEXT: shlb (%rdx) # sched: [6:1.00] 11932; BROADWELL-NEXT: shrb (%rdx) # sched: [6:1.00] 11933; BROADWELL-NEXT: sarb $7, %dil # sched: [1:0.50] 11934; BROADWELL-NEXT: shlb $7, %dil # sched: [1:0.50] 11935; BROADWELL-NEXT: shrb $7, %dil # sched: [1:0.50] 11936; BROADWELL-NEXT: sarb $7, (%rdx) # sched: [6:1.00] 11937; BROADWELL-NEXT: shlb $7, (%rdx) # sched: [6:1.00] 11938; BROADWELL-NEXT: shrb $7, (%rdx) # sched: [6:1.00] 11939; BROADWELL-NEXT: sarb %cl, %dil # sched: [3:1.00] 11940; BROADWELL-NEXT: shlb %cl, %dil # sched: [3:1.00] 11941; BROADWELL-NEXT: shrb %cl, %dil # sched: [3:1.00] 11942; BROADWELL-NEXT: sarb %cl, (%rdx) # sched: [8:1.00] 11943; BROADWELL-NEXT: shlb %cl, (%rdx) # sched: [8:1.00] 11944; BROADWELL-NEXT: shrb %cl, (%rdx) # sched: [8:1.00] 11945; BROADWELL-NEXT: #NO_APP 11946; BROADWELL-NEXT: retq # sched: [7:1.00] 11947; 11948; SKYLAKE-LABEL: test_sar_shl_shr_8: 11949; SKYLAKE: # %bb.0: 11950; SKYLAKE-NEXT: #APP 11951; SKYLAKE-NEXT: sarb %dil # sched: [1:0.50] 11952; SKYLAKE-NEXT: shlb %dil # sched: [1:0.50] 11953; SKYLAKE-NEXT: shrb %dil # sched: [1:0.50] 11954; SKYLAKE-NEXT: sarb (%rdx) # sched: [6:1.00] 11955; SKYLAKE-NEXT: shlb (%rdx) # sched: [6:1.00] 11956; SKYLAKE-NEXT: shrb (%rdx) # sched: [6:1.00] 11957; SKYLAKE-NEXT: sarb $7, %dil # sched: [1:0.50] 11958; SKYLAKE-NEXT: shlb $7, %dil # sched: [1:0.50] 11959; SKYLAKE-NEXT: shrb $7, %dil # sched: [1:0.50] 11960; SKYLAKE-NEXT: sarb $7, (%rdx) # sched: [6:1.00] 11961; SKYLAKE-NEXT: shlb $7, (%rdx) # sched: [6:1.00] 11962; SKYLAKE-NEXT: shrb $7, (%rdx) # sched: [6:1.00] 11963; SKYLAKE-NEXT: sarb %cl, %dil # sched: [3:1.50] 11964; SKYLAKE-NEXT: shlb %cl, %dil # sched: [3:1.50] 11965; SKYLAKE-NEXT: shrb %cl, %dil # sched: [3:1.50] 11966; SKYLAKE-NEXT: sarb %cl, (%rdx) # sched: [8:1.50] 11967; SKYLAKE-NEXT: shlb %cl, (%rdx) # sched: [8:1.50] 11968; SKYLAKE-NEXT: shrb %cl, (%rdx) # sched: [8:1.50] 11969; SKYLAKE-NEXT: #NO_APP 11970; SKYLAKE-NEXT: retq # sched: [7:1.00] 11971; 11972; SKX-LABEL: test_sar_shl_shr_8: 11973; SKX: # %bb.0: 11974; SKX-NEXT: #APP 11975; SKX-NEXT: sarb %dil # sched: [1:0.50] 11976; SKX-NEXT: shlb %dil # sched: [1:0.50] 11977; SKX-NEXT: shrb %dil # sched: [1:0.50] 11978; SKX-NEXT: sarb (%rdx) # sched: [6:1.00] 11979; SKX-NEXT: shlb (%rdx) # sched: [6:1.00] 11980; SKX-NEXT: shrb (%rdx) # sched: [6:1.00] 11981; SKX-NEXT: sarb $7, %dil # sched: [1:0.50] 11982; SKX-NEXT: shlb $7, %dil # sched: [1:0.50] 11983; SKX-NEXT: shrb $7, %dil # sched: [1:0.50] 11984; SKX-NEXT: sarb $7, (%rdx) # sched: [6:1.00] 11985; SKX-NEXT: shlb $7, (%rdx) # sched: [6:1.00] 11986; SKX-NEXT: shrb $7, (%rdx) # sched: [6:1.00] 11987; SKX-NEXT: sarb %cl, %dil # sched: [3:1.50] 11988; SKX-NEXT: shlb %cl, %dil # sched: [3:1.50] 11989; SKX-NEXT: shrb %cl, %dil # sched: [3:1.50] 11990; SKX-NEXT: sarb %cl, (%rdx) # sched: [8:1.50] 11991; SKX-NEXT: shlb %cl, (%rdx) # sched: [8:1.50] 11992; SKX-NEXT: shrb %cl, (%rdx) # sched: [8:1.50] 11993; SKX-NEXT: #NO_APP 11994; SKX-NEXT: retq # sched: [7:1.00] 11995; 11996; BTVER2-LABEL: test_sar_shl_shr_8: 11997; BTVER2: # %bb.0: 11998; BTVER2-NEXT: #APP 11999; BTVER2-NEXT: sarb %dil # sched: [1:0.50] 12000; BTVER2-NEXT: shlb %dil # sched: [1:0.50] 12001; BTVER2-NEXT: shrb %dil # sched: [1:0.50] 12002; BTVER2-NEXT: sarb (%rdx) # sched: [4:1.00] 12003; BTVER2-NEXT: shlb (%rdx) # sched: [4:1.00] 12004; BTVER2-NEXT: shrb (%rdx) # sched: [4:1.00] 12005; BTVER2-NEXT: sarb $7, %dil # sched: [1:0.50] 12006; BTVER2-NEXT: shlb $7, %dil # sched: [1:0.50] 12007; BTVER2-NEXT: shrb $7, %dil # sched: [1:0.50] 12008; BTVER2-NEXT: sarb $7, (%rdx) # sched: [4:1.00] 12009; BTVER2-NEXT: shlb $7, (%rdx) # sched: [4:1.00] 12010; BTVER2-NEXT: shrb $7, (%rdx) # sched: [4:1.00] 12011; BTVER2-NEXT: sarb %cl, %dil # sched: [1:0.50] 12012; BTVER2-NEXT: shlb %cl, %dil # sched: [1:0.50] 12013; BTVER2-NEXT: shrb %cl, %dil # sched: [1:0.50] 12014; BTVER2-NEXT: sarb %cl, (%rdx) # sched: [4:1.00] 12015; BTVER2-NEXT: shlb %cl, (%rdx) # sched: [4:1.00] 12016; BTVER2-NEXT: shrb %cl, (%rdx) # sched: [4:1.00] 12017; BTVER2-NEXT: #NO_APP 12018; BTVER2-NEXT: retq # sched: [4:1.00] 12019; 12020; ZNVER1-LABEL: test_sar_shl_shr_8: 12021; ZNVER1: # %bb.0: 12022; ZNVER1-NEXT: #APP 12023; ZNVER1-NEXT: sarb %dil # sched: [1:0.25] 12024; ZNVER1-NEXT: shlb %dil # sched: [1:0.25] 12025; ZNVER1-NEXT: shrb %dil # sched: [1:0.25] 12026; ZNVER1-NEXT: sarb (%rdx) # sched: [5:0.50] 12027; ZNVER1-NEXT: shlb (%rdx) # sched: [5:0.50] 12028; ZNVER1-NEXT: shrb (%rdx) # sched: [5:0.50] 12029; ZNVER1-NEXT: sarb $7, %dil # sched: [1:0.25] 12030; ZNVER1-NEXT: shlb $7, %dil # sched: [1:0.25] 12031; ZNVER1-NEXT: shrb $7, %dil # sched: [1:0.25] 12032; ZNVER1-NEXT: sarb $7, (%rdx) # sched: [5:0.50] 12033; ZNVER1-NEXT: shlb $7, (%rdx) # sched: [5:0.50] 12034; ZNVER1-NEXT: shrb $7, (%rdx) # sched: [5:0.50] 12035; ZNVER1-NEXT: sarb %cl, %dil # sched: [1:0.25] 12036; ZNVER1-NEXT: shlb %cl, %dil # sched: [1:0.25] 12037; ZNVER1-NEXT: shrb %cl, %dil # sched: [1:0.25] 12038; ZNVER1-NEXT: sarb %cl, (%rdx) # sched: [5:1.00] 12039; ZNVER1-NEXT: shlb %cl, (%rdx) # sched: [5:1.00] 12040; ZNVER1-NEXT: shrb %cl, (%rdx) # sched: [5:1.00] 12041; ZNVER1-NEXT: #NO_APP 12042; ZNVER1-NEXT: retq # sched: [1:0.50] 12043 call void asm sideeffect "sarb $0 \0A\09 shlb $0 \0A\09 shrb $0 \0A\09 sarb $2 \0A\09 shlb $2 \0A\09 shrb $2 \0A\09 sarb $3, $0 \0A\09 shlb $3, $0 \0A\09 shrb $3, $0 \0A\09 sarb $3, $2 \0A\09 shlb $3, $2 \0A\09 shrb $3, $2 \0A\09 sarb %CL, $0 \0A\09 shlb %CL, $0 \0A\09 shrb %CL, $0 \0A\09 sarb %CL, $2 \0A\09 shlb %CL, $2 \0A\09 shrb %CL, $2", "r,r,*m,i"(i8 %a0, i8 %a1, i8 *%a2, i8 7) 12044 ret void 12045} 12046define void @test_sar_shl_shr_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 12047; GENERIC-LABEL: test_sar_shl_shr_16: 12048; GENERIC: # %bb.0: 12049; GENERIC-NEXT: #APP 12050; GENERIC-NEXT: sarw %di # sched: [1:0.50] 12051; GENERIC-NEXT: shlw %di # sched: [1:0.50] 12052; GENERIC-NEXT: shrw %di # sched: [1:0.50] 12053; GENERIC-NEXT: sarw (%rdx) # sched: [7:1.00] 12054; GENERIC-NEXT: shlw (%rdx) # sched: [7:1.00] 12055; GENERIC-NEXT: shrw (%rdx) # sched: [7:1.00] 12056; GENERIC-NEXT: sarw $7, %di # sched: [1:0.50] 12057; GENERIC-NEXT: shlw $7, %di # sched: [1:0.50] 12058; GENERIC-NEXT: shrw $7, %di # sched: [1:0.50] 12059; GENERIC-NEXT: sarw $7, (%rdx) # sched: [7:1.00] 12060; GENERIC-NEXT: shlw $7, (%rdx) # sched: [7:1.00] 12061; GENERIC-NEXT: shrw $7, (%rdx) # sched: [7:1.00] 12062; GENERIC-NEXT: sarw %cl, %di # sched: [3:1.50] 12063; GENERIC-NEXT: shlw %cl, %di # sched: [3:1.50] 12064; GENERIC-NEXT: shrw %cl, %di # sched: [3:1.50] 12065; GENERIC-NEXT: sarw %cl, (%rdx) # sched: [9:1.50] 12066; GENERIC-NEXT: shlw %cl, (%rdx) # sched: [9:1.50] 12067; GENERIC-NEXT: shrw %cl, (%rdx) # sched: [9:1.50] 12068; GENERIC-NEXT: #NO_APP 12069; GENERIC-NEXT: retq # sched: [1:1.00] 12070; 12071; ATOM-LABEL: test_sar_shl_shr_16: 12072; ATOM: # %bb.0: 12073; ATOM-NEXT: #APP 12074; ATOM-NEXT: sarw %di # sched: [1:1.00] 12075; ATOM-NEXT: shlw %di # sched: [1:1.00] 12076; ATOM-NEXT: shrw %di # sched: [1:1.00] 12077; ATOM-NEXT: sarw (%rdx) # sched: [1:1.00] 12078; ATOM-NEXT: shlw (%rdx) # sched: [1:1.00] 12079; ATOM-NEXT: shrw (%rdx) # sched: [1:1.00] 12080; ATOM-NEXT: sarw $7, %di # sched: [1:1.00] 12081; ATOM-NEXT: shlw $7, %di # sched: [1:1.00] 12082; ATOM-NEXT: shrw $7, %di # sched: [1:1.00] 12083; ATOM-NEXT: sarw $7, (%rdx) # sched: [1:1.00] 12084; ATOM-NEXT: shlw $7, (%rdx) # sched: [1:1.00] 12085; ATOM-NEXT: shrw $7, (%rdx) # sched: [1:1.00] 12086; ATOM-NEXT: sarw %cl, %di # sched: [1:1.00] 12087; ATOM-NEXT: shlw %cl, %di # sched: [1:1.00] 12088; ATOM-NEXT: shrw %cl, %di # sched: [1:1.00] 12089; ATOM-NEXT: sarw %cl, (%rdx) # sched: [1:1.00] 12090; ATOM-NEXT: shlw %cl, (%rdx) # sched: [1:1.00] 12091; ATOM-NEXT: shrw %cl, (%rdx) # sched: [1:1.00] 12092; ATOM-NEXT: #NO_APP 12093; ATOM-NEXT: retq # sched: [79:39.50] 12094; 12095; SLM-LABEL: test_sar_shl_shr_16: 12096; SLM: # %bb.0: 12097; SLM-NEXT: #APP 12098; SLM-NEXT: sarw %di # sched: [1:1.00] 12099; SLM-NEXT: shlw %di # sched: [1:1.00] 12100; SLM-NEXT: shrw %di # sched: [1:1.00] 12101; SLM-NEXT: sarw (%rdx) # sched: [4:2.00] 12102; SLM-NEXT: shlw (%rdx) # sched: [4:2.00] 12103; SLM-NEXT: shrw (%rdx) # sched: [4:2.00] 12104; SLM-NEXT: sarw $7, %di # sched: [1:1.00] 12105; SLM-NEXT: shlw $7, %di # sched: [1:1.00] 12106; SLM-NEXT: shrw $7, %di # sched: [1:1.00] 12107; SLM-NEXT: sarw $7, (%rdx) # sched: [4:2.00] 12108; SLM-NEXT: shlw $7, (%rdx) # sched: [4:2.00] 12109; SLM-NEXT: shrw $7, (%rdx) # sched: [4:2.00] 12110; SLM-NEXT: sarw %cl, %di # sched: [1:1.00] 12111; SLM-NEXT: shlw %cl, %di # sched: [1:1.00] 12112; SLM-NEXT: shrw %cl, %di # sched: [1:1.00] 12113; SLM-NEXT: sarw %cl, (%rdx) # sched: [4:2.00] 12114; SLM-NEXT: shlw %cl, (%rdx) # sched: [4:2.00] 12115; SLM-NEXT: shrw %cl, (%rdx) # sched: [4:2.00] 12116; SLM-NEXT: #NO_APP 12117; SLM-NEXT: retq # sched: [4:1.00] 12118; 12119; SANDY-LABEL: test_sar_shl_shr_16: 12120; SANDY: # %bb.0: 12121; SANDY-NEXT: #APP 12122; SANDY-NEXT: sarw %di # sched: [1:0.50] 12123; SANDY-NEXT: shlw %di # sched: [1:0.50] 12124; SANDY-NEXT: shrw %di # sched: [1:0.50] 12125; SANDY-NEXT: sarw (%rdx) # sched: [7:1.00] 12126; SANDY-NEXT: shlw (%rdx) # sched: [7:1.00] 12127; SANDY-NEXT: shrw (%rdx) # sched: [7:1.00] 12128; SANDY-NEXT: sarw $7, %di # sched: [1:0.50] 12129; SANDY-NEXT: shlw $7, %di # sched: [1:0.50] 12130; SANDY-NEXT: shrw $7, %di # sched: [1:0.50] 12131; SANDY-NEXT: sarw $7, (%rdx) # sched: [7:1.00] 12132; SANDY-NEXT: shlw $7, (%rdx) # sched: [7:1.00] 12133; SANDY-NEXT: shrw $7, (%rdx) # sched: [7:1.00] 12134; SANDY-NEXT: sarw %cl, %di # sched: [3:1.50] 12135; SANDY-NEXT: shlw %cl, %di # sched: [3:1.50] 12136; SANDY-NEXT: shrw %cl, %di # sched: [3:1.50] 12137; SANDY-NEXT: sarw %cl, (%rdx) # sched: [9:1.50] 12138; SANDY-NEXT: shlw %cl, (%rdx) # sched: [9:1.50] 12139; SANDY-NEXT: shrw %cl, (%rdx) # sched: [9:1.50] 12140; SANDY-NEXT: #NO_APP 12141; SANDY-NEXT: retq # sched: [1:1.00] 12142; 12143; HASWELL-LABEL: test_sar_shl_shr_16: 12144; HASWELL: # %bb.0: 12145; HASWELL-NEXT: #APP 12146; HASWELL-NEXT: sarw %di # sched: [1:0.50] 12147; HASWELL-NEXT: shlw %di # sched: [1:0.50] 12148; HASWELL-NEXT: shrw %di # sched: [1:0.50] 12149; HASWELL-NEXT: sarw (%rdx) # sched: [7:1.00] 12150; HASWELL-NEXT: shlw (%rdx) # sched: [7:1.00] 12151; HASWELL-NEXT: shrw (%rdx) # sched: [7:1.00] 12152; HASWELL-NEXT: sarw $7, %di # sched: [1:0.50] 12153; HASWELL-NEXT: shlw $7, %di # sched: [1:0.50] 12154; HASWELL-NEXT: shrw $7, %di # sched: [1:0.50] 12155; HASWELL-NEXT: sarw $7, (%rdx) # sched: [7:1.00] 12156; HASWELL-NEXT: shlw $7, (%rdx) # sched: [7:1.00] 12157; HASWELL-NEXT: shrw $7, (%rdx) # sched: [7:1.00] 12158; HASWELL-NEXT: sarw %cl, %di # sched: [3:1.00] 12159; HASWELL-NEXT: shlw %cl, %di # sched: [3:1.00] 12160; HASWELL-NEXT: shrw %cl, %di # sched: [3:1.00] 12161; HASWELL-NEXT: sarw %cl, (%rdx) # sched: [9:1.00] 12162; HASWELL-NEXT: shlw %cl, (%rdx) # sched: [9:1.00] 12163; HASWELL-NEXT: shrw %cl, (%rdx) # sched: [9:1.00] 12164; HASWELL-NEXT: #NO_APP 12165; HASWELL-NEXT: retq # sched: [7:1.00] 12166; 12167; BROADWELL-LABEL: test_sar_shl_shr_16: 12168; BROADWELL: # %bb.0: 12169; BROADWELL-NEXT: #APP 12170; BROADWELL-NEXT: sarw %di # sched: [1:0.50] 12171; BROADWELL-NEXT: shlw %di # sched: [1:0.50] 12172; BROADWELL-NEXT: shrw %di # sched: [1:0.50] 12173; BROADWELL-NEXT: sarw (%rdx) # sched: [6:1.00] 12174; BROADWELL-NEXT: shlw (%rdx) # sched: [6:1.00] 12175; BROADWELL-NEXT: shrw (%rdx) # sched: [6:1.00] 12176; BROADWELL-NEXT: sarw $7, %di # sched: [1:0.50] 12177; BROADWELL-NEXT: shlw $7, %di # sched: [1:0.50] 12178; BROADWELL-NEXT: shrw $7, %di # sched: [1:0.50] 12179; BROADWELL-NEXT: sarw $7, (%rdx) # sched: [6:1.00] 12180; BROADWELL-NEXT: shlw $7, (%rdx) # sched: [6:1.00] 12181; BROADWELL-NEXT: shrw $7, (%rdx) # sched: [6:1.00] 12182; BROADWELL-NEXT: sarw %cl, %di # sched: [3:1.00] 12183; BROADWELL-NEXT: shlw %cl, %di # sched: [3:1.00] 12184; BROADWELL-NEXT: shrw %cl, %di # sched: [3:1.00] 12185; BROADWELL-NEXT: sarw %cl, (%rdx) # sched: [8:1.00] 12186; BROADWELL-NEXT: shlw %cl, (%rdx) # sched: [8:1.00] 12187; BROADWELL-NEXT: shrw %cl, (%rdx) # sched: [8:1.00] 12188; BROADWELL-NEXT: #NO_APP 12189; BROADWELL-NEXT: retq # sched: [7:1.00] 12190; 12191; SKYLAKE-LABEL: test_sar_shl_shr_16: 12192; SKYLAKE: # %bb.0: 12193; SKYLAKE-NEXT: #APP 12194; SKYLAKE-NEXT: sarw %di # sched: [1:0.50] 12195; SKYLAKE-NEXT: shlw %di # sched: [1:0.50] 12196; SKYLAKE-NEXT: shrw %di # sched: [1:0.50] 12197; SKYLAKE-NEXT: sarw (%rdx) # sched: [6:1.00] 12198; SKYLAKE-NEXT: shlw (%rdx) # sched: [6:1.00] 12199; SKYLAKE-NEXT: shrw (%rdx) # sched: [6:1.00] 12200; SKYLAKE-NEXT: sarw $7, %di # sched: [1:0.50] 12201; SKYLAKE-NEXT: shlw $7, %di # sched: [1:0.50] 12202; SKYLAKE-NEXT: shrw $7, %di # sched: [1:0.50] 12203; SKYLAKE-NEXT: sarw $7, (%rdx) # sched: [6:1.00] 12204; SKYLAKE-NEXT: shlw $7, (%rdx) # sched: [6:1.00] 12205; SKYLAKE-NEXT: shrw $7, (%rdx) # sched: [6:1.00] 12206; SKYLAKE-NEXT: sarw %cl, %di # sched: [3:1.50] 12207; SKYLAKE-NEXT: shlw %cl, %di # sched: [3:1.50] 12208; SKYLAKE-NEXT: shrw %cl, %di # sched: [3:1.50] 12209; SKYLAKE-NEXT: sarw %cl, (%rdx) # sched: [8:1.50] 12210; SKYLAKE-NEXT: shlw %cl, (%rdx) # sched: [8:1.50] 12211; SKYLAKE-NEXT: shrw %cl, (%rdx) # sched: [8:1.50] 12212; SKYLAKE-NEXT: #NO_APP 12213; SKYLAKE-NEXT: retq # sched: [7:1.00] 12214; 12215; SKX-LABEL: test_sar_shl_shr_16: 12216; SKX: # %bb.0: 12217; SKX-NEXT: #APP 12218; SKX-NEXT: sarw %di # sched: [1:0.50] 12219; SKX-NEXT: shlw %di # sched: [1:0.50] 12220; SKX-NEXT: shrw %di # sched: [1:0.50] 12221; SKX-NEXT: sarw (%rdx) # sched: [6:1.00] 12222; SKX-NEXT: shlw (%rdx) # sched: [6:1.00] 12223; SKX-NEXT: shrw (%rdx) # sched: [6:1.00] 12224; SKX-NEXT: sarw $7, %di # sched: [1:0.50] 12225; SKX-NEXT: shlw $7, %di # sched: [1:0.50] 12226; SKX-NEXT: shrw $7, %di # sched: [1:0.50] 12227; SKX-NEXT: sarw $7, (%rdx) # sched: [6:1.00] 12228; SKX-NEXT: shlw $7, (%rdx) # sched: [6:1.00] 12229; SKX-NEXT: shrw $7, (%rdx) # sched: [6:1.00] 12230; SKX-NEXT: sarw %cl, %di # sched: [3:1.50] 12231; SKX-NEXT: shlw %cl, %di # sched: [3:1.50] 12232; SKX-NEXT: shrw %cl, %di # sched: [3:1.50] 12233; SKX-NEXT: sarw %cl, (%rdx) # sched: [8:1.50] 12234; SKX-NEXT: shlw %cl, (%rdx) # sched: [8:1.50] 12235; SKX-NEXT: shrw %cl, (%rdx) # sched: [8:1.50] 12236; SKX-NEXT: #NO_APP 12237; SKX-NEXT: retq # sched: [7:1.00] 12238; 12239; BTVER2-LABEL: test_sar_shl_shr_16: 12240; BTVER2: # %bb.0: 12241; BTVER2-NEXT: #APP 12242; BTVER2-NEXT: sarw %di # sched: [1:0.50] 12243; BTVER2-NEXT: shlw %di # sched: [1:0.50] 12244; BTVER2-NEXT: shrw %di # sched: [1:0.50] 12245; BTVER2-NEXT: sarw (%rdx) # sched: [4:1.00] 12246; BTVER2-NEXT: shlw (%rdx) # sched: [4:1.00] 12247; BTVER2-NEXT: shrw (%rdx) # sched: [4:1.00] 12248; BTVER2-NEXT: sarw $7, %di # sched: [1:0.50] 12249; BTVER2-NEXT: shlw $7, %di # sched: [1:0.50] 12250; BTVER2-NEXT: shrw $7, %di # sched: [1:0.50] 12251; BTVER2-NEXT: sarw $7, (%rdx) # sched: [4:1.00] 12252; BTVER2-NEXT: shlw $7, (%rdx) # sched: [4:1.00] 12253; BTVER2-NEXT: shrw $7, (%rdx) # sched: [4:1.00] 12254; BTVER2-NEXT: sarw %cl, %di # sched: [1:0.50] 12255; BTVER2-NEXT: shlw %cl, %di # sched: [1:0.50] 12256; BTVER2-NEXT: shrw %cl, %di # sched: [1:0.50] 12257; BTVER2-NEXT: sarw %cl, (%rdx) # sched: [4:1.00] 12258; BTVER2-NEXT: shlw %cl, (%rdx) # sched: [4:1.00] 12259; BTVER2-NEXT: shrw %cl, (%rdx) # sched: [4:1.00] 12260; BTVER2-NEXT: #NO_APP 12261; BTVER2-NEXT: retq # sched: [4:1.00] 12262; 12263; ZNVER1-LABEL: test_sar_shl_shr_16: 12264; ZNVER1: # %bb.0: 12265; ZNVER1-NEXT: #APP 12266; ZNVER1-NEXT: sarw %di # sched: [1:0.25] 12267; ZNVER1-NEXT: shlw %di # sched: [1:0.25] 12268; ZNVER1-NEXT: shrw %di # sched: [1:0.25] 12269; ZNVER1-NEXT: sarw (%rdx) # sched: [5:0.50] 12270; ZNVER1-NEXT: shlw (%rdx) # sched: [5:0.50] 12271; ZNVER1-NEXT: shrw (%rdx) # sched: [5:0.50] 12272; ZNVER1-NEXT: sarw $7, %di # sched: [1:0.25] 12273; ZNVER1-NEXT: shlw $7, %di # sched: [1:0.25] 12274; ZNVER1-NEXT: shrw $7, %di # sched: [1:0.25] 12275; ZNVER1-NEXT: sarw $7, (%rdx) # sched: [5:0.50] 12276; ZNVER1-NEXT: shlw $7, (%rdx) # sched: [5:0.50] 12277; ZNVER1-NEXT: shrw $7, (%rdx) # sched: [5:0.50] 12278; ZNVER1-NEXT: sarw %cl, %di # sched: [1:0.25] 12279; ZNVER1-NEXT: shlw %cl, %di # sched: [1:0.25] 12280; ZNVER1-NEXT: shrw %cl, %di # sched: [1:0.25] 12281; ZNVER1-NEXT: sarw %cl, (%rdx) # sched: [5:1.00] 12282; ZNVER1-NEXT: shlw %cl, (%rdx) # sched: [5:1.00] 12283; ZNVER1-NEXT: shrw %cl, (%rdx) # sched: [5:1.00] 12284; ZNVER1-NEXT: #NO_APP 12285; ZNVER1-NEXT: retq # sched: [1:0.50] 12286 call void asm sideeffect "sarw $0 \0A\09 shlw $0 \0A\09 shrw $0 \0A\09 sarw $2 \0A\09 shlw $2 \0A\09 shrw $2 \0A\09 sarw $3, $0 \0A\09 shlw $3, $0 \0A\09 shrw $3, $0 \0A\09 sarw $3, $2 \0A\09 shlw $3, $2 \0A\09 shrw $3, $2 \0A\09 sarw %CL, $0 \0A\09 shlw %CL, $0 \0A\09 shrw %CL, $0 \0A\09 sarw %CL, $2 \0A\09 shlw %CL, $2 \0A\09 shrw %CL, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 12287 ret void 12288} 12289define void @test_sar_shl_shr_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 12290; GENERIC-LABEL: test_sar_shl_shr_32: 12291; GENERIC: # %bb.0: 12292; GENERIC-NEXT: #APP 12293; GENERIC-NEXT: sarl %edi # sched: [1:0.50] 12294; GENERIC-NEXT: shll %edi # sched: [1:0.50] 12295; GENERIC-NEXT: shrl %edi # sched: [1:0.50] 12296; GENERIC-NEXT: sarl (%rdx) # sched: [7:1.00] 12297; GENERIC-NEXT: shll (%rdx) # sched: [7:1.00] 12298; GENERIC-NEXT: shrl (%rdx) # sched: [7:1.00] 12299; GENERIC-NEXT: sarl $7, %edi # sched: [1:0.50] 12300; GENERIC-NEXT: shll $7, %edi # sched: [1:0.50] 12301; GENERIC-NEXT: shrl $7, %edi # sched: [1:0.50] 12302; GENERIC-NEXT: sarl $7, (%rdx) # sched: [7:1.00] 12303; GENERIC-NEXT: shll $7, (%rdx) # sched: [7:1.00] 12304; GENERIC-NEXT: shrl $7, (%rdx) # sched: [7:1.00] 12305; GENERIC-NEXT: sarl %cl, %edi # sched: [3:1.50] 12306; GENERIC-NEXT: shll %cl, %edi # sched: [3:1.50] 12307; GENERIC-NEXT: shrl %cl, %edi # sched: [3:1.50] 12308; GENERIC-NEXT: sarl %cl, (%rdx) # sched: [9:1.50] 12309; GENERIC-NEXT: shll %cl, (%rdx) # sched: [9:1.50] 12310; GENERIC-NEXT: shrl %cl, (%rdx) # sched: [9:1.50] 12311; GENERIC-NEXT: #NO_APP 12312; GENERIC-NEXT: retq # sched: [1:1.00] 12313; 12314; ATOM-LABEL: test_sar_shl_shr_32: 12315; ATOM: # %bb.0: 12316; ATOM-NEXT: #APP 12317; ATOM-NEXT: sarl %edi # sched: [1:1.00] 12318; ATOM-NEXT: shll %edi # sched: [1:1.00] 12319; ATOM-NEXT: shrl %edi # sched: [1:1.00] 12320; ATOM-NEXT: sarl (%rdx) # sched: [1:1.00] 12321; ATOM-NEXT: shll (%rdx) # sched: [1:1.00] 12322; ATOM-NEXT: shrl (%rdx) # sched: [1:1.00] 12323; ATOM-NEXT: sarl $7, %edi # sched: [1:1.00] 12324; ATOM-NEXT: shll $7, %edi # sched: [1:1.00] 12325; ATOM-NEXT: shrl $7, %edi # sched: [1:1.00] 12326; ATOM-NEXT: sarl $7, (%rdx) # sched: [1:1.00] 12327; ATOM-NEXT: shll $7, (%rdx) # sched: [1:1.00] 12328; ATOM-NEXT: shrl $7, (%rdx) # sched: [1:1.00] 12329; ATOM-NEXT: sarl %cl, %edi # sched: [1:1.00] 12330; ATOM-NEXT: shll %cl, %edi # sched: [1:1.00] 12331; ATOM-NEXT: shrl %cl, %edi # sched: [1:1.00] 12332; ATOM-NEXT: sarl %cl, (%rdx) # sched: [1:1.00] 12333; ATOM-NEXT: shll %cl, (%rdx) # sched: [1:1.00] 12334; ATOM-NEXT: shrl %cl, (%rdx) # sched: [1:1.00] 12335; ATOM-NEXT: #NO_APP 12336; ATOM-NEXT: retq # sched: [79:39.50] 12337; 12338; SLM-LABEL: test_sar_shl_shr_32: 12339; SLM: # %bb.0: 12340; SLM-NEXT: #APP 12341; SLM-NEXT: sarl %edi # sched: [1:1.00] 12342; SLM-NEXT: shll %edi # sched: [1:1.00] 12343; SLM-NEXT: shrl %edi # sched: [1:1.00] 12344; SLM-NEXT: sarl (%rdx) # sched: [4:2.00] 12345; SLM-NEXT: shll (%rdx) # sched: [4:2.00] 12346; SLM-NEXT: shrl (%rdx) # sched: [4:2.00] 12347; SLM-NEXT: sarl $7, %edi # sched: [1:1.00] 12348; SLM-NEXT: shll $7, %edi # sched: [1:1.00] 12349; SLM-NEXT: shrl $7, %edi # sched: [1:1.00] 12350; SLM-NEXT: sarl $7, (%rdx) # sched: [4:2.00] 12351; SLM-NEXT: shll $7, (%rdx) # sched: [4:2.00] 12352; SLM-NEXT: shrl $7, (%rdx) # sched: [4:2.00] 12353; SLM-NEXT: sarl %cl, %edi # sched: [1:1.00] 12354; SLM-NEXT: shll %cl, %edi # sched: [1:1.00] 12355; SLM-NEXT: shrl %cl, %edi # sched: [1:1.00] 12356; SLM-NEXT: sarl %cl, (%rdx) # sched: [4:2.00] 12357; SLM-NEXT: shll %cl, (%rdx) # sched: [4:2.00] 12358; SLM-NEXT: shrl %cl, (%rdx) # sched: [4:2.00] 12359; SLM-NEXT: #NO_APP 12360; SLM-NEXT: retq # sched: [4:1.00] 12361; 12362; SANDY-LABEL: test_sar_shl_shr_32: 12363; SANDY: # %bb.0: 12364; SANDY-NEXT: #APP 12365; SANDY-NEXT: sarl %edi # sched: [1:0.50] 12366; SANDY-NEXT: shll %edi # sched: [1:0.50] 12367; SANDY-NEXT: shrl %edi # sched: [1:0.50] 12368; SANDY-NEXT: sarl (%rdx) # sched: [7:1.00] 12369; SANDY-NEXT: shll (%rdx) # sched: [7:1.00] 12370; SANDY-NEXT: shrl (%rdx) # sched: [7:1.00] 12371; SANDY-NEXT: sarl $7, %edi # sched: [1:0.50] 12372; SANDY-NEXT: shll $7, %edi # sched: [1:0.50] 12373; SANDY-NEXT: shrl $7, %edi # sched: [1:0.50] 12374; SANDY-NEXT: sarl $7, (%rdx) # sched: [7:1.00] 12375; SANDY-NEXT: shll $7, (%rdx) # sched: [7:1.00] 12376; SANDY-NEXT: shrl $7, (%rdx) # sched: [7:1.00] 12377; SANDY-NEXT: sarl %cl, %edi # sched: [3:1.50] 12378; SANDY-NEXT: shll %cl, %edi # sched: [3:1.50] 12379; SANDY-NEXT: shrl %cl, %edi # sched: [3:1.50] 12380; SANDY-NEXT: sarl %cl, (%rdx) # sched: [9:1.50] 12381; SANDY-NEXT: shll %cl, (%rdx) # sched: [9:1.50] 12382; SANDY-NEXT: shrl %cl, (%rdx) # sched: [9:1.50] 12383; SANDY-NEXT: #NO_APP 12384; SANDY-NEXT: retq # sched: [1:1.00] 12385; 12386; HASWELL-LABEL: test_sar_shl_shr_32: 12387; HASWELL: # %bb.0: 12388; HASWELL-NEXT: #APP 12389; HASWELL-NEXT: sarl %edi # sched: [1:0.50] 12390; HASWELL-NEXT: shll %edi # sched: [1:0.50] 12391; HASWELL-NEXT: shrl %edi # sched: [1:0.50] 12392; HASWELL-NEXT: sarl (%rdx) # sched: [7:1.00] 12393; HASWELL-NEXT: shll (%rdx) # sched: [7:1.00] 12394; HASWELL-NEXT: shrl (%rdx) # sched: [7:1.00] 12395; HASWELL-NEXT: sarl $7, %edi # sched: [1:0.50] 12396; HASWELL-NEXT: shll $7, %edi # sched: [1:0.50] 12397; HASWELL-NEXT: shrl $7, %edi # sched: [1:0.50] 12398; HASWELL-NEXT: sarl $7, (%rdx) # sched: [7:1.00] 12399; HASWELL-NEXT: shll $7, (%rdx) # sched: [7:1.00] 12400; HASWELL-NEXT: shrl $7, (%rdx) # sched: [7:1.00] 12401; HASWELL-NEXT: sarl %cl, %edi # sched: [3:1.00] 12402; HASWELL-NEXT: shll %cl, %edi # sched: [3:1.00] 12403; HASWELL-NEXT: shrl %cl, %edi # sched: [3:1.00] 12404; HASWELL-NEXT: sarl %cl, (%rdx) # sched: [9:1.00] 12405; HASWELL-NEXT: shll %cl, (%rdx) # sched: [9:1.00] 12406; HASWELL-NEXT: shrl %cl, (%rdx) # sched: [9:1.00] 12407; HASWELL-NEXT: #NO_APP 12408; HASWELL-NEXT: retq # sched: [7:1.00] 12409; 12410; BROADWELL-LABEL: test_sar_shl_shr_32: 12411; BROADWELL: # %bb.0: 12412; BROADWELL-NEXT: #APP 12413; BROADWELL-NEXT: sarl %edi # sched: [1:0.50] 12414; BROADWELL-NEXT: shll %edi # sched: [1:0.50] 12415; BROADWELL-NEXT: shrl %edi # sched: [1:0.50] 12416; BROADWELL-NEXT: sarl (%rdx) # sched: [6:1.00] 12417; BROADWELL-NEXT: shll (%rdx) # sched: [6:1.00] 12418; BROADWELL-NEXT: shrl (%rdx) # sched: [6:1.00] 12419; BROADWELL-NEXT: sarl $7, %edi # sched: [1:0.50] 12420; BROADWELL-NEXT: shll $7, %edi # sched: [1:0.50] 12421; BROADWELL-NEXT: shrl $7, %edi # sched: [1:0.50] 12422; BROADWELL-NEXT: sarl $7, (%rdx) # sched: [6:1.00] 12423; BROADWELL-NEXT: shll $7, (%rdx) # sched: [6:1.00] 12424; BROADWELL-NEXT: shrl $7, (%rdx) # sched: [6:1.00] 12425; BROADWELL-NEXT: sarl %cl, %edi # sched: [3:1.00] 12426; BROADWELL-NEXT: shll %cl, %edi # sched: [3:1.00] 12427; BROADWELL-NEXT: shrl %cl, %edi # sched: [3:1.00] 12428; BROADWELL-NEXT: sarl %cl, (%rdx) # sched: [8:1.00] 12429; BROADWELL-NEXT: shll %cl, (%rdx) # sched: [8:1.00] 12430; BROADWELL-NEXT: shrl %cl, (%rdx) # sched: [8:1.00] 12431; BROADWELL-NEXT: #NO_APP 12432; BROADWELL-NEXT: retq # sched: [7:1.00] 12433; 12434; SKYLAKE-LABEL: test_sar_shl_shr_32: 12435; SKYLAKE: # %bb.0: 12436; SKYLAKE-NEXT: #APP 12437; SKYLAKE-NEXT: sarl %edi # sched: [1:0.50] 12438; SKYLAKE-NEXT: shll %edi # sched: [1:0.50] 12439; SKYLAKE-NEXT: shrl %edi # sched: [1:0.50] 12440; SKYLAKE-NEXT: sarl (%rdx) # sched: [6:1.00] 12441; SKYLAKE-NEXT: shll (%rdx) # sched: [6:1.00] 12442; SKYLAKE-NEXT: shrl (%rdx) # sched: [6:1.00] 12443; SKYLAKE-NEXT: sarl $7, %edi # sched: [1:0.50] 12444; SKYLAKE-NEXT: shll $7, %edi # sched: [1:0.50] 12445; SKYLAKE-NEXT: shrl $7, %edi # sched: [1:0.50] 12446; SKYLAKE-NEXT: sarl $7, (%rdx) # sched: [6:1.00] 12447; SKYLAKE-NEXT: shll $7, (%rdx) # sched: [6:1.00] 12448; SKYLAKE-NEXT: shrl $7, (%rdx) # sched: [6:1.00] 12449; SKYLAKE-NEXT: sarl %cl, %edi # sched: [3:1.50] 12450; SKYLAKE-NEXT: shll %cl, %edi # sched: [3:1.50] 12451; SKYLAKE-NEXT: shrl %cl, %edi # sched: [3:1.50] 12452; SKYLAKE-NEXT: sarl %cl, (%rdx) # sched: [8:1.50] 12453; SKYLAKE-NEXT: shll %cl, (%rdx) # sched: [8:1.50] 12454; SKYLAKE-NEXT: shrl %cl, (%rdx) # sched: [8:1.50] 12455; SKYLAKE-NEXT: #NO_APP 12456; SKYLAKE-NEXT: retq # sched: [7:1.00] 12457; 12458; SKX-LABEL: test_sar_shl_shr_32: 12459; SKX: # %bb.0: 12460; SKX-NEXT: #APP 12461; SKX-NEXT: sarl %edi # sched: [1:0.50] 12462; SKX-NEXT: shll %edi # sched: [1:0.50] 12463; SKX-NEXT: shrl %edi # sched: [1:0.50] 12464; SKX-NEXT: sarl (%rdx) # sched: [6:1.00] 12465; SKX-NEXT: shll (%rdx) # sched: [6:1.00] 12466; SKX-NEXT: shrl (%rdx) # sched: [6:1.00] 12467; SKX-NEXT: sarl $7, %edi # sched: [1:0.50] 12468; SKX-NEXT: shll $7, %edi # sched: [1:0.50] 12469; SKX-NEXT: shrl $7, %edi # sched: [1:0.50] 12470; SKX-NEXT: sarl $7, (%rdx) # sched: [6:1.00] 12471; SKX-NEXT: shll $7, (%rdx) # sched: [6:1.00] 12472; SKX-NEXT: shrl $7, (%rdx) # sched: [6:1.00] 12473; SKX-NEXT: sarl %cl, %edi # sched: [3:1.50] 12474; SKX-NEXT: shll %cl, %edi # sched: [3:1.50] 12475; SKX-NEXT: shrl %cl, %edi # sched: [3:1.50] 12476; SKX-NEXT: sarl %cl, (%rdx) # sched: [8:1.50] 12477; SKX-NEXT: shll %cl, (%rdx) # sched: [8:1.50] 12478; SKX-NEXT: shrl %cl, (%rdx) # sched: [8:1.50] 12479; SKX-NEXT: #NO_APP 12480; SKX-NEXT: retq # sched: [7:1.00] 12481; 12482; BTVER2-LABEL: test_sar_shl_shr_32: 12483; BTVER2: # %bb.0: 12484; BTVER2-NEXT: #APP 12485; BTVER2-NEXT: sarl %edi # sched: [1:0.50] 12486; BTVER2-NEXT: shll %edi # sched: [1:0.50] 12487; BTVER2-NEXT: shrl %edi # sched: [1:0.50] 12488; BTVER2-NEXT: sarl (%rdx) # sched: [4:1.00] 12489; BTVER2-NEXT: shll (%rdx) # sched: [4:1.00] 12490; BTVER2-NEXT: shrl (%rdx) # sched: [4:1.00] 12491; BTVER2-NEXT: sarl $7, %edi # sched: [1:0.50] 12492; BTVER2-NEXT: shll $7, %edi # sched: [1:0.50] 12493; BTVER2-NEXT: shrl $7, %edi # sched: [1:0.50] 12494; BTVER2-NEXT: sarl $7, (%rdx) # sched: [4:1.00] 12495; BTVER2-NEXT: shll $7, (%rdx) # sched: [4:1.00] 12496; BTVER2-NEXT: shrl $7, (%rdx) # sched: [4:1.00] 12497; BTVER2-NEXT: sarl %cl, %edi # sched: [1:0.50] 12498; BTVER2-NEXT: shll %cl, %edi # sched: [1:0.50] 12499; BTVER2-NEXT: shrl %cl, %edi # sched: [1:0.50] 12500; BTVER2-NEXT: sarl %cl, (%rdx) # sched: [4:1.00] 12501; BTVER2-NEXT: shll %cl, (%rdx) # sched: [4:1.00] 12502; BTVER2-NEXT: shrl %cl, (%rdx) # sched: [4:1.00] 12503; BTVER2-NEXT: #NO_APP 12504; BTVER2-NEXT: retq # sched: [4:1.00] 12505; 12506; ZNVER1-LABEL: test_sar_shl_shr_32: 12507; ZNVER1: # %bb.0: 12508; ZNVER1-NEXT: #APP 12509; ZNVER1-NEXT: sarl %edi # sched: [1:0.25] 12510; ZNVER1-NEXT: shll %edi # sched: [1:0.25] 12511; ZNVER1-NEXT: shrl %edi # sched: [1:0.25] 12512; ZNVER1-NEXT: sarl (%rdx) # sched: [5:0.50] 12513; ZNVER1-NEXT: shll (%rdx) # sched: [5:0.50] 12514; ZNVER1-NEXT: shrl (%rdx) # sched: [5:0.50] 12515; ZNVER1-NEXT: sarl $7, %edi # sched: [1:0.25] 12516; ZNVER1-NEXT: shll $7, %edi # sched: [1:0.25] 12517; ZNVER1-NEXT: shrl $7, %edi # sched: [1:0.25] 12518; ZNVER1-NEXT: sarl $7, (%rdx) # sched: [5:0.50] 12519; ZNVER1-NEXT: shll $7, (%rdx) # sched: [5:0.50] 12520; ZNVER1-NEXT: shrl $7, (%rdx) # sched: [5:0.50] 12521; ZNVER1-NEXT: sarl %cl, %edi # sched: [1:0.25] 12522; ZNVER1-NEXT: shll %cl, %edi # sched: [1:0.25] 12523; ZNVER1-NEXT: shrl %cl, %edi # sched: [1:0.25] 12524; ZNVER1-NEXT: sarl %cl, (%rdx) # sched: [5:1.00] 12525; ZNVER1-NEXT: shll %cl, (%rdx) # sched: [5:1.00] 12526; ZNVER1-NEXT: shrl %cl, (%rdx) # sched: [5:1.00] 12527; ZNVER1-NEXT: #NO_APP 12528; ZNVER1-NEXT: retq # sched: [1:0.50] 12529 call void asm sideeffect "sarl $0 \0A\09 shll $0 \0A\09 shrl $0 \0A\09 sarl $2 \0A\09 shll $2 \0A\09 shrl $2 \0A\09 sarl $3, $0 \0A\09 shll $3, $0 \0A\09 shrl $3, $0 \0A\09 sarl $3, $2 \0A\09 shll $3, $2 \0A\09 shrl $3, $2 \0A\09 sarl %CL, $0 \0A\09 shll %CL, $0 \0A\09 shrl %CL, $0 \0A\09 sarl %CL, $2 \0A\09 shll %CL, $2 \0A\09 shrl %CL, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 12530 ret void 12531} 12532define void @test_sar_shl_shr_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 12533; GENERIC-LABEL: test_sar_shl_shr_64: 12534; GENERIC: # %bb.0: 12535; GENERIC-NEXT: #APP 12536; GENERIC-NEXT: sarq %rdi # sched: [1:0.50] 12537; GENERIC-NEXT: shlq %rdi # sched: [1:0.50] 12538; GENERIC-NEXT: shrq %rdi # sched: [1:0.50] 12539; GENERIC-NEXT: sarq (%rdx) # sched: [7:1.00] 12540; GENERIC-NEXT: shlq (%rdx) # sched: [7:1.00] 12541; GENERIC-NEXT: shrq (%rdx) # sched: [7:1.00] 12542; GENERIC-NEXT: sarq $7, %rdi # sched: [1:0.50] 12543; GENERIC-NEXT: shlq $7, %rdi # sched: [1:0.50] 12544; GENERIC-NEXT: shrq $7, %rdi # sched: [1:0.50] 12545; GENERIC-NEXT: sarq $7, (%rdx) # sched: [7:1.00] 12546; GENERIC-NEXT: shlq $7, (%rdx) # sched: [7:1.00] 12547; GENERIC-NEXT: shrq $7, (%rdx) # sched: [7:1.00] 12548; GENERIC-NEXT: sarq %cl, %rdi # sched: [3:1.50] 12549; GENERIC-NEXT: shlq %cl, %rdi # sched: [3:1.50] 12550; GENERIC-NEXT: shrq %cl, %rdi # sched: [3:1.50] 12551; GENERIC-NEXT: sarq %cl, (%rdx) # sched: [9:1.50] 12552; GENERIC-NEXT: shlq %cl, (%rdx) # sched: [9:1.50] 12553; GENERIC-NEXT: shrq %cl, (%rdx) # sched: [9:1.50] 12554; GENERIC-NEXT: #NO_APP 12555; GENERIC-NEXT: retq # sched: [1:1.00] 12556; 12557; ATOM-LABEL: test_sar_shl_shr_64: 12558; ATOM: # %bb.0: 12559; ATOM-NEXT: #APP 12560; ATOM-NEXT: sarq %rdi # sched: [1:1.00] 12561; ATOM-NEXT: shlq %rdi # sched: [1:1.00] 12562; ATOM-NEXT: shrq %rdi # sched: [1:1.00] 12563; ATOM-NEXT: sarq (%rdx) # sched: [1:1.00] 12564; ATOM-NEXT: shlq (%rdx) # sched: [1:1.00] 12565; ATOM-NEXT: shrq (%rdx) # sched: [1:1.00] 12566; ATOM-NEXT: sarq $7, %rdi # sched: [1:1.00] 12567; ATOM-NEXT: shlq $7, %rdi # sched: [1:1.00] 12568; ATOM-NEXT: shrq $7, %rdi # sched: [1:1.00] 12569; ATOM-NEXT: sarq $7, (%rdx) # sched: [1:1.00] 12570; ATOM-NEXT: shlq $7, (%rdx) # sched: [1:1.00] 12571; ATOM-NEXT: shrq $7, (%rdx) # sched: [1:1.00] 12572; ATOM-NEXT: sarq %cl, %rdi # sched: [1:1.00] 12573; ATOM-NEXT: shlq %cl, %rdi # sched: [1:1.00] 12574; ATOM-NEXT: shrq %cl, %rdi # sched: [1:1.00] 12575; ATOM-NEXT: sarq %cl, (%rdx) # sched: [1:1.00] 12576; ATOM-NEXT: shlq %cl, (%rdx) # sched: [1:1.00] 12577; ATOM-NEXT: shrq %cl, (%rdx) # sched: [1:1.00] 12578; ATOM-NEXT: #NO_APP 12579; ATOM-NEXT: retq # sched: [79:39.50] 12580; 12581; SLM-LABEL: test_sar_shl_shr_64: 12582; SLM: # %bb.0: 12583; SLM-NEXT: #APP 12584; SLM-NEXT: sarq %rdi # sched: [1:1.00] 12585; SLM-NEXT: shlq %rdi # sched: [1:1.00] 12586; SLM-NEXT: shrq %rdi # sched: [1:1.00] 12587; SLM-NEXT: sarq (%rdx) # sched: [4:2.00] 12588; SLM-NEXT: shlq (%rdx) # sched: [4:2.00] 12589; SLM-NEXT: shrq (%rdx) # sched: [4:2.00] 12590; SLM-NEXT: sarq $7, %rdi # sched: [1:1.00] 12591; SLM-NEXT: shlq $7, %rdi # sched: [1:1.00] 12592; SLM-NEXT: shrq $7, %rdi # sched: [1:1.00] 12593; SLM-NEXT: sarq $7, (%rdx) # sched: [4:2.00] 12594; SLM-NEXT: shlq $7, (%rdx) # sched: [4:2.00] 12595; SLM-NEXT: shrq $7, (%rdx) # sched: [4:2.00] 12596; SLM-NEXT: sarq %cl, %rdi # sched: [1:1.00] 12597; SLM-NEXT: shlq %cl, %rdi # sched: [1:1.00] 12598; SLM-NEXT: shrq %cl, %rdi # sched: [1:1.00] 12599; SLM-NEXT: sarq %cl, (%rdx) # sched: [4:2.00] 12600; SLM-NEXT: shlq %cl, (%rdx) # sched: [4:2.00] 12601; SLM-NEXT: shrq %cl, (%rdx) # sched: [4:2.00] 12602; SLM-NEXT: #NO_APP 12603; SLM-NEXT: retq # sched: [4:1.00] 12604; 12605; SANDY-LABEL: test_sar_shl_shr_64: 12606; SANDY: # %bb.0: 12607; SANDY-NEXT: #APP 12608; SANDY-NEXT: sarq %rdi # sched: [1:0.50] 12609; SANDY-NEXT: shlq %rdi # sched: [1:0.50] 12610; SANDY-NEXT: shrq %rdi # sched: [1:0.50] 12611; SANDY-NEXT: sarq (%rdx) # sched: [7:1.00] 12612; SANDY-NEXT: shlq (%rdx) # sched: [7:1.00] 12613; SANDY-NEXT: shrq (%rdx) # sched: [7:1.00] 12614; SANDY-NEXT: sarq $7, %rdi # sched: [1:0.50] 12615; SANDY-NEXT: shlq $7, %rdi # sched: [1:0.50] 12616; SANDY-NEXT: shrq $7, %rdi # sched: [1:0.50] 12617; SANDY-NEXT: sarq $7, (%rdx) # sched: [7:1.00] 12618; SANDY-NEXT: shlq $7, (%rdx) # sched: [7:1.00] 12619; SANDY-NEXT: shrq $7, (%rdx) # sched: [7:1.00] 12620; SANDY-NEXT: sarq %cl, %rdi # sched: [3:1.50] 12621; SANDY-NEXT: shlq %cl, %rdi # sched: [3:1.50] 12622; SANDY-NEXT: shrq %cl, %rdi # sched: [3:1.50] 12623; SANDY-NEXT: sarq %cl, (%rdx) # sched: [9:1.50] 12624; SANDY-NEXT: shlq %cl, (%rdx) # sched: [9:1.50] 12625; SANDY-NEXT: shrq %cl, (%rdx) # sched: [9:1.50] 12626; SANDY-NEXT: #NO_APP 12627; SANDY-NEXT: retq # sched: [1:1.00] 12628; 12629; HASWELL-LABEL: test_sar_shl_shr_64: 12630; HASWELL: # %bb.0: 12631; HASWELL-NEXT: #APP 12632; HASWELL-NEXT: sarq %rdi # sched: [1:0.50] 12633; HASWELL-NEXT: shlq %rdi # sched: [1:0.50] 12634; HASWELL-NEXT: shrq %rdi # sched: [1:0.50] 12635; HASWELL-NEXT: sarq (%rdx) # sched: [7:1.00] 12636; HASWELL-NEXT: shlq (%rdx) # sched: [7:1.00] 12637; HASWELL-NEXT: shrq (%rdx) # sched: [7:1.00] 12638; HASWELL-NEXT: sarq $7, %rdi # sched: [1:0.50] 12639; HASWELL-NEXT: shlq $7, %rdi # sched: [1:0.50] 12640; HASWELL-NEXT: shrq $7, %rdi # sched: [1:0.50] 12641; HASWELL-NEXT: sarq $7, (%rdx) # sched: [7:1.00] 12642; HASWELL-NEXT: shlq $7, (%rdx) # sched: [7:1.00] 12643; HASWELL-NEXT: shrq $7, (%rdx) # sched: [7:1.00] 12644; HASWELL-NEXT: sarq %cl, %rdi # sched: [3:1.00] 12645; HASWELL-NEXT: shlq %cl, %rdi # sched: [3:1.00] 12646; HASWELL-NEXT: shrq %cl, %rdi # sched: [3:1.00] 12647; HASWELL-NEXT: sarq %cl, (%rdx) # sched: [9:1.00] 12648; HASWELL-NEXT: shlq %cl, (%rdx) # sched: [9:1.00] 12649; HASWELL-NEXT: shrq %cl, (%rdx) # sched: [9:1.00] 12650; HASWELL-NEXT: #NO_APP 12651; HASWELL-NEXT: retq # sched: [7:1.00] 12652; 12653; BROADWELL-LABEL: test_sar_shl_shr_64: 12654; BROADWELL: # %bb.0: 12655; BROADWELL-NEXT: #APP 12656; BROADWELL-NEXT: sarq %rdi # sched: [1:0.50] 12657; BROADWELL-NEXT: shlq %rdi # sched: [1:0.50] 12658; BROADWELL-NEXT: shrq %rdi # sched: [1:0.50] 12659; BROADWELL-NEXT: sarq (%rdx) # sched: [6:1.00] 12660; BROADWELL-NEXT: shlq (%rdx) # sched: [6:1.00] 12661; BROADWELL-NEXT: shrq (%rdx) # sched: [6:1.00] 12662; BROADWELL-NEXT: sarq $7, %rdi # sched: [1:0.50] 12663; BROADWELL-NEXT: shlq $7, %rdi # sched: [1:0.50] 12664; BROADWELL-NEXT: shrq $7, %rdi # sched: [1:0.50] 12665; BROADWELL-NEXT: sarq $7, (%rdx) # sched: [6:1.00] 12666; BROADWELL-NEXT: shlq $7, (%rdx) # sched: [6:1.00] 12667; BROADWELL-NEXT: shrq $7, (%rdx) # sched: [6:1.00] 12668; BROADWELL-NEXT: sarq %cl, %rdi # sched: [3:1.00] 12669; BROADWELL-NEXT: shlq %cl, %rdi # sched: [3:1.00] 12670; BROADWELL-NEXT: shrq %cl, %rdi # sched: [3:1.00] 12671; BROADWELL-NEXT: sarq %cl, (%rdx) # sched: [8:1.00] 12672; BROADWELL-NEXT: shlq %cl, (%rdx) # sched: [8:1.00] 12673; BROADWELL-NEXT: shrq %cl, (%rdx) # sched: [8:1.00] 12674; BROADWELL-NEXT: #NO_APP 12675; BROADWELL-NEXT: retq # sched: [7:1.00] 12676; 12677; SKYLAKE-LABEL: test_sar_shl_shr_64: 12678; SKYLAKE: # %bb.0: 12679; SKYLAKE-NEXT: #APP 12680; SKYLAKE-NEXT: sarq %rdi # sched: [1:0.50] 12681; SKYLAKE-NEXT: shlq %rdi # sched: [1:0.50] 12682; SKYLAKE-NEXT: shrq %rdi # sched: [1:0.50] 12683; SKYLAKE-NEXT: sarq (%rdx) # sched: [6:1.00] 12684; SKYLAKE-NEXT: shlq (%rdx) # sched: [6:1.00] 12685; SKYLAKE-NEXT: shrq (%rdx) # sched: [6:1.00] 12686; SKYLAKE-NEXT: sarq $7, %rdi # sched: [1:0.50] 12687; SKYLAKE-NEXT: shlq $7, %rdi # sched: [1:0.50] 12688; SKYLAKE-NEXT: shrq $7, %rdi # sched: [1:0.50] 12689; SKYLAKE-NEXT: sarq $7, (%rdx) # sched: [6:1.00] 12690; SKYLAKE-NEXT: shlq $7, (%rdx) # sched: [6:1.00] 12691; SKYLAKE-NEXT: shrq $7, (%rdx) # sched: [6:1.00] 12692; SKYLAKE-NEXT: sarq %cl, %rdi # sched: [3:1.50] 12693; SKYLAKE-NEXT: shlq %cl, %rdi # sched: [3:1.50] 12694; SKYLAKE-NEXT: shrq %cl, %rdi # sched: [3:1.50] 12695; SKYLAKE-NEXT: sarq %cl, (%rdx) # sched: [8:1.50] 12696; SKYLAKE-NEXT: shlq %cl, (%rdx) # sched: [8:1.50] 12697; SKYLAKE-NEXT: shrq %cl, (%rdx) # sched: [8:1.50] 12698; SKYLAKE-NEXT: #NO_APP 12699; SKYLAKE-NEXT: retq # sched: [7:1.00] 12700; 12701; SKX-LABEL: test_sar_shl_shr_64: 12702; SKX: # %bb.0: 12703; SKX-NEXT: #APP 12704; SKX-NEXT: sarq %rdi # sched: [1:0.50] 12705; SKX-NEXT: shlq %rdi # sched: [1:0.50] 12706; SKX-NEXT: shrq %rdi # sched: [1:0.50] 12707; SKX-NEXT: sarq (%rdx) # sched: [6:1.00] 12708; SKX-NEXT: shlq (%rdx) # sched: [6:1.00] 12709; SKX-NEXT: shrq (%rdx) # sched: [6:1.00] 12710; SKX-NEXT: sarq $7, %rdi # sched: [1:0.50] 12711; SKX-NEXT: shlq $7, %rdi # sched: [1:0.50] 12712; SKX-NEXT: shrq $7, %rdi # sched: [1:0.50] 12713; SKX-NEXT: sarq $7, (%rdx) # sched: [6:1.00] 12714; SKX-NEXT: shlq $7, (%rdx) # sched: [6:1.00] 12715; SKX-NEXT: shrq $7, (%rdx) # sched: [6:1.00] 12716; SKX-NEXT: sarq %cl, %rdi # sched: [3:1.50] 12717; SKX-NEXT: shlq %cl, %rdi # sched: [3:1.50] 12718; SKX-NEXT: shrq %cl, %rdi # sched: [3:1.50] 12719; SKX-NEXT: sarq %cl, (%rdx) # sched: [8:1.50] 12720; SKX-NEXT: shlq %cl, (%rdx) # sched: [8:1.50] 12721; SKX-NEXT: shrq %cl, (%rdx) # sched: [8:1.50] 12722; SKX-NEXT: #NO_APP 12723; SKX-NEXT: retq # sched: [7:1.00] 12724; 12725; BTVER2-LABEL: test_sar_shl_shr_64: 12726; BTVER2: # %bb.0: 12727; BTVER2-NEXT: #APP 12728; BTVER2-NEXT: sarq %rdi # sched: [1:0.50] 12729; BTVER2-NEXT: shlq %rdi # sched: [1:0.50] 12730; BTVER2-NEXT: shrq %rdi # sched: [1:0.50] 12731; BTVER2-NEXT: sarq (%rdx) # sched: [4:1.00] 12732; BTVER2-NEXT: shlq (%rdx) # sched: [4:1.00] 12733; BTVER2-NEXT: shrq (%rdx) # sched: [4:1.00] 12734; BTVER2-NEXT: sarq $7, %rdi # sched: [1:0.50] 12735; BTVER2-NEXT: shlq $7, %rdi # sched: [1:0.50] 12736; BTVER2-NEXT: shrq $7, %rdi # sched: [1:0.50] 12737; BTVER2-NEXT: sarq $7, (%rdx) # sched: [4:1.00] 12738; BTVER2-NEXT: shlq $7, (%rdx) # sched: [4:1.00] 12739; BTVER2-NEXT: shrq $7, (%rdx) # sched: [4:1.00] 12740; BTVER2-NEXT: sarq %cl, %rdi # sched: [1:0.50] 12741; BTVER2-NEXT: shlq %cl, %rdi # sched: [1:0.50] 12742; BTVER2-NEXT: shrq %cl, %rdi # sched: [1:0.50] 12743; BTVER2-NEXT: sarq %cl, (%rdx) # sched: [4:1.00] 12744; BTVER2-NEXT: shlq %cl, (%rdx) # sched: [4:1.00] 12745; BTVER2-NEXT: shrq %cl, (%rdx) # sched: [4:1.00] 12746; BTVER2-NEXT: #NO_APP 12747; BTVER2-NEXT: retq # sched: [4:1.00] 12748; 12749; ZNVER1-LABEL: test_sar_shl_shr_64: 12750; ZNVER1: # %bb.0: 12751; ZNVER1-NEXT: #APP 12752; ZNVER1-NEXT: sarq %rdi # sched: [1:0.25] 12753; ZNVER1-NEXT: shlq %rdi # sched: [1:0.25] 12754; ZNVER1-NEXT: shrq %rdi # sched: [1:0.25] 12755; ZNVER1-NEXT: sarq (%rdx) # sched: [5:0.50] 12756; ZNVER1-NEXT: shlq (%rdx) # sched: [5:0.50] 12757; ZNVER1-NEXT: shrq (%rdx) # sched: [5:0.50] 12758; ZNVER1-NEXT: sarq $7, %rdi # sched: [1:0.25] 12759; ZNVER1-NEXT: shlq $7, %rdi # sched: [1:0.25] 12760; ZNVER1-NEXT: shrq $7, %rdi # sched: [1:0.25] 12761; ZNVER1-NEXT: sarq $7, (%rdx) # sched: [5:0.50] 12762; ZNVER1-NEXT: shlq $7, (%rdx) # sched: [5:0.50] 12763; ZNVER1-NEXT: shrq $7, (%rdx) # sched: [5:0.50] 12764; ZNVER1-NEXT: sarq %cl, %rdi # sched: [1:0.25] 12765; ZNVER1-NEXT: shlq %cl, %rdi # sched: [1:0.25] 12766; ZNVER1-NEXT: shrq %cl, %rdi # sched: [1:0.25] 12767; ZNVER1-NEXT: sarq %cl, (%rdx) # sched: [5:1.00] 12768; ZNVER1-NEXT: shlq %cl, (%rdx) # sched: [5:1.00] 12769; ZNVER1-NEXT: shrq %cl, (%rdx) # sched: [5:1.00] 12770; ZNVER1-NEXT: #NO_APP 12771; ZNVER1-NEXT: retq # sched: [1:0.50] 12772 call void asm sideeffect "sarq $0 \0A\09 shlq $0 \0A\09 shrq $0 \0A\09 sarq $2 \0A\09 shlq $2 \0A\09 shrq $2 \0A\09 sarq $3, $0 \0A\09 shlq $3, $0 \0A\09 shrq $3, $0 \0A\09 sarq $3, $2 \0A\09 shlq $3, $2 \0A\09 shrq $3, $2 \0A\09 sarq %CL, $0 \0A\09 shlq %CL, $0 \0A\09 shrq %CL, $0 \0A\09 sarq %CL, $2 \0A\09 shlq %CL, $2 \0A\09 shrq %CL, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 12773 ret void 12774} 12775 12776define void @test_sbb_8(i8 %a0, i8* %a1, i8 %a2) optsize { 12777; GENERIC-LABEL: test_sbb_8: 12778; GENERIC: # %bb.0: 12779; GENERIC-NEXT: #APP 12780; GENERIC-NEXT: sbbb $7, %al # sched: [2:0.67] 12781; GENERIC-NEXT: sbbb $7, %dil # sched: [2:0.67] 12782; GENERIC-NEXT: sbbb $7, (%rsi) # sched: [9:1.00] 12783; GENERIC-NEXT: sbbb %dl, %dil # sched: [2:0.67] 12784; GENERIC-NEXT: sbbb %dil, (%rsi) # sched: [9:1.00] 12785; GENERIC-NEXT: sbbb (%rsi), %dil # sched: [7:0.67] 12786; GENERIC-NEXT: #NO_APP 12787; GENERIC-NEXT: retq # sched: [1:1.00] 12788; 12789; ATOM-LABEL: test_sbb_8: 12790; ATOM: # %bb.0: 12791; ATOM-NEXT: #APP 12792; ATOM-NEXT: sbbb $7, %al # sched: [1:0.50] 12793; ATOM-NEXT: sbbb $7, %dil # sched: [1:0.50] 12794; ATOM-NEXT: sbbb $7, (%rsi) # sched: [1:1.00] 12795; ATOM-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12796; ATOM-NEXT: sbbb %dil, (%rsi) # sched: [1:1.00] 12797; ATOM-NEXT: sbbb (%rsi), %dil # sched: [1:1.00] 12798; ATOM-NEXT: #NO_APP 12799; ATOM-NEXT: retq # sched: [79:39.50] 12800; 12801; SLM-LABEL: test_sbb_8: 12802; SLM: # %bb.0: 12803; SLM-NEXT: #APP 12804; SLM-NEXT: sbbb $7, %al # sched: [1:0.50] 12805; SLM-NEXT: sbbb $7, %dil # sched: [1:0.50] 12806; SLM-NEXT: sbbb $7, (%rsi) # sched: [5:2.00] 12807; SLM-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12808; SLM-NEXT: sbbb %dil, (%rsi) # sched: [5:2.00] 12809; SLM-NEXT: sbbb (%rsi), %dil # sched: [4:1.00] 12810; SLM-NEXT: #NO_APP 12811; SLM-NEXT: retq # sched: [4:1.00] 12812; 12813; SANDY-LABEL: test_sbb_8: 12814; SANDY: # %bb.0: 12815; SANDY-NEXT: #APP 12816; SANDY-NEXT: sbbb $7, %al # sched: [2:0.67] 12817; SANDY-NEXT: sbbb $7, %dil # sched: [2:0.67] 12818; SANDY-NEXT: sbbb $7, (%rsi) # sched: [9:1.00] 12819; SANDY-NEXT: sbbb %dl, %dil # sched: [2:0.67] 12820; SANDY-NEXT: sbbb %dil, (%rsi) # sched: [9:1.00] 12821; SANDY-NEXT: sbbb (%rsi), %dil # sched: [7:0.67] 12822; SANDY-NEXT: #NO_APP 12823; SANDY-NEXT: retq # sched: [1:1.00] 12824; 12825; HASWELL-LABEL: test_sbb_8: 12826; HASWELL: # %bb.0: 12827; HASWELL-NEXT: #APP 12828; HASWELL-NEXT: sbbb $7, %al # sched: [2:0.50] 12829; HASWELL-NEXT: sbbb $7, %dil # sched: [2:0.50] 12830; HASWELL-NEXT: sbbb $7, (%rsi) # sched: [9:1.00] 12831; HASWELL-NEXT: sbbb %dl, %dil # sched: [2:0.50] 12832; HASWELL-NEXT: sbbb %dil, (%rsi) # sched: [9:1.00] 12833; HASWELL-NEXT: sbbb (%rsi), %dil # sched: [7:0.50] 12834; HASWELL-NEXT: #NO_APP 12835; HASWELL-NEXT: retq # sched: [7:1.00] 12836; 12837; BROADWELL-LABEL: test_sbb_8: 12838; BROADWELL: # %bb.0: 12839; BROADWELL-NEXT: #APP 12840; BROADWELL-NEXT: sbbb $7, %al # sched: [2:0.50] 12841; BROADWELL-NEXT: sbbb $7, %dil # sched: [2:0.50] 12842; BROADWELL-NEXT: sbbb $7, (%rsi) # sched: [8:1.00] 12843; BROADWELL-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12844; BROADWELL-NEXT: sbbb %dil, (%rsi) # sched: [8:1.00] 12845; BROADWELL-NEXT: sbbb (%rsi), %dil # sched: [6:0.50] 12846; BROADWELL-NEXT: #NO_APP 12847; BROADWELL-NEXT: retq # sched: [7:1.00] 12848; 12849; SKYLAKE-LABEL: test_sbb_8: 12850; SKYLAKE: # %bb.0: 12851; SKYLAKE-NEXT: #APP 12852; SKYLAKE-NEXT: sbbb $7, %al # sched: [2:0.50] 12853; SKYLAKE-NEXT: sbbb $7, %dil # sched: [2:0.50] 12854; SKYLAKE-NEXT: sbbb $7, (%rsi) # sched: [8:1.00] 12855; SKYLAKE-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12856; SKYLAKE-NEXT: sbbb %dil, (%rsi) # sched: [8:1.00] 12857; SKYLAKE-NEXT: sbbb (%rsi), %dil # sched: [6:0.50] 12858; SKYLAKE-NEXT: #NO_APP 12859; SKYLAKE-NEXT: retq # sched: [7:1.00] 12860; 12861; SKX-LABEL: test_sbb_8: 12862; SKX: # %bb.0: 12863; SKX-NEXT: #APP 12864; SKX-NEXT: sbbb $7, %al # sched: [2:0.50] 12865; SKX-NEXT: sbbb $7, %dil # sched: [2:0.50] 12866; SKX-NEXT: sbbb $7, (%rsi) # sched: [8:1.00] 12867; SKX-NEXT: sbbb %dl, %dil # sched: [1:0.50] 12868; SKX-NEXT: sbbb %dil, (%rsi) # sched: [8:1.00] 12869; SKX-NEXT: sbbb (%rsi), %dil # sched: [6:0.50] 12870; SKX-NEXT: #NO_APP 12871; SKX-NEXT: retq # sched: [7:1.00] 12872; 12873; BTVER2-LABEL: test_sbb_8: 12874; BTVER2: # %bb.0: 12875; BTVER2-NEXT: #APP 12876; BTVER2-NEXT: sbbb $7, %al # sched: [1:1.00] 12877; BTVER2-NEXT: sbbb $7, %dil # sched: [1:1.00] 12878; BTVER2-NEXT: sbbb $7, (%rsi) # sched: [5:1.00] 12879; BTVER2-NEXT: sbbb %dl, %dil # sched: [1:1.00] 12880; BTVER2-NEXT: sbbb %dil, (%rsi) # sched: [5:1.00] 12881; BTVER2-NEXT: sbbb (%rsi), %dil # sched: [4:1.00] 12882; BTVER2-NEXT: #NO_APP 12883; BTVER2-NEXT: retq # sched: [4:1.00] 12884; 12885; ZNVER1-LABEL: test_sbb_8: 12886; ZNVER1: # %bb.0: 12887; ZNVER1-NEXT: #APP 12888; ZNVER1-NEXT: sbbb $7, %al # sched: [1:0.25] 12889; ZNVER1-NEXT: sbbb $7, %dil # sched: [1:0.25] 12890; ZNVER1-NEXT: sbbb $7, (%rsi) # sched: [5:0.50] 12891; ZNVER1-NEXT: sbbb %dl, %dil # sched: [1:0.25] 12892; ZNVER1-NEXT: sbbb %dil, (%rsi) # sched: [5:0.50] 12893; ZNVER1-NEXT: sbbb (%rsi), %dil # sched: [5:0.50] 12894; ZNVER1-NEXT: #NO_APP 12895; ZNVER1-NEXT: retq # sched: [1:0.50] 12896 tail call void asm "sbbb $3, %AL \0A\09 sbbb $3, $0 \0A\09 sbbb $3, $2 \0A\09 sbbb $1, $0 \0A\09 sbbb $0, $2 \0A\09 sbbb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 12897 ret void 12898} 12899define void @test_sbb_16(i16 %a0, i16* %a1, i16 %a2) optsize { 12900; GENERIC-LABEL: test_sbb_16: 12901; GENERIC: # %bb.0: 12902; GENERIC-NEXT: #APP 12903; GENERIC-NEXT: sbbw $511, %ax # imm = 0x1FF 12904; GENERIC-NEXT: # sched: [2:0.67] 12905; GENERIC-NEXT: sbbw $511, %di # imm = 0x1FF 12906; GENERIC-NEXT: # sched: [2:0.67] 12907; GENERIC-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12908; GENERIC-NEXT: # sched: [9:1.00] 12909; GENERIC-NEXT: sbbw $7, %di # sched: [2:0.67] 12910; GENERIC-NEXT: sbbw $7, (%rsi) # sched: [9:1.00] 12911; GENERIC-NEXT: sbbw %dx, %di # sched: [2:0.67] 12912; GENERIC-NEXT: sbbw %di, (%rsi) # sched: [9:1.00] 12913; GENERIC-NEXT: sbbw (%rsi), %di # sched: [7:0.67] 12914; GENERIC-NEXT: #NO_APP 12915; GENERIC-NEXT: retq # sched: [1:1.00] 12916; 12917; ATOM-LABEL: test_sbb_16: 12918; ATOM: # %bb.0: 12919; ATOM-NEXT: #APP 12920; ATOM-NEXT: sbbw $511, %ax # imm = 0x1FF 12921; ATOM-NEXT: # sched: [1:0.50] 12922; ATOM-NEXT: sbbw $511, %di # imm = 0x1FF 12923; ATOM-NEXT: # sched: [1:0.50] 12924; ATOM-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12925; ATOM-NEXT: # sched: [1:1.00] 12926; ATOM-NEXT: sbbw $7, %di # sched: [1:0.50] 12927; ATOM-NEXT: sbbw $7, (%rsi) # sched: [1:1.00] 12928; ATOM-NEXT: sbbw %dx, %di # sched: [1:0.50] 12929; ATOM-NEXT: sbbw %di, (%rsi) # sched: [1:1.00] 12930; ATOM-NEXT: sbbw (%rsi), %di # sched: [1:1.00] 12931; ATOM-NEXT: #NO_APP 12932; ATOM-NEXT: retq # sched: [79:39.50] 12933; 12934; SLM-LABEL: test_sbb_16: 12935; SLM: # %bb.0: 12936; SLM-NEXT: #APP 12937; SLM-NEXT: sbbw $511, %ax # imm = 0x1FF 12938; SLM-NEXT: # sched: [1:0.50] 12939; SLM-NEXT: sbbw $511, %di # imm = 0x1FF 12940; SLM-NEXT: # sched: [1:0.50] 12941; SLM-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12942; SLM-NEXT: # sched: [5:2.00] 12943; SLM-NEXT: sbbw $7, %di # sched: [1:0.50] 12944; SLM-NEXT: sbbw $7, (%rsi) # sched: [5:2.00] 12945; SLM-NEXT: sbbw %dx, %di # sched: [1:0.50] 12946; SLM-NEXT: sbbw %di, (%rsi) # sched: [5:2.00] 12947; SLM-NEXT: sbbw (%rsi), %di # sched: [4:1.00] 12948; SLM-NEXT: #NO_APP 12949; SLM-NEXT: retq # sched: [4:1.00] 12950; 12951; SANDY-LABEL: test_sbb_16: 12952; SANDY: # %bb.0: 12953; SANDY-NEXT: #APP 12954; SANDY-NEXT: sbbw $511, %ax # imm = 0x1FF 12955; SANDY-NEXT: # sched: [2:0.67] 12956; SANDY-NEXT: sbbw $511, %di # imm = 0x1FF 12957; SANDY-NEXT: # sched: [2:0.67] 12958; SANDY-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12959; SANDY-NEXT: # sched: [9:1.00] 12960; SANDY-NEXT: sbbw $7, %di # sched: [2:0.67] 12961; SANDY-NEXT: sbbw $7, (%rsi) # sched: [9:1.00] 12962; SANDY-NEXT: sbbw %dx, %di # sched: [2:0.67] 12963; SANDY-NEXT: sbbw %di, (%rsi) # sched: [9:1.00] 12964; SANDY-NEXT: sbbw (%rsi), %di # sched: [7:0.67] 12965; SANDY-NEXT: #NO_APP 12966; SANDY-NEXT: retq # sched: [1:1.00] 12967; 12968; HASWELL-LABEL: test_sbb_16: 12969; HASWELL: # %bb.0: 12970; HASWELL-NEXT: #APP 12971; HASWELL-NEXT: sbbw $511, %ax # imm = 0x1FF 12972; HASWELL-NEXT: # sched: [2:0.50] 12973; HASWELL-NEXT: sbbw $511, %di # imm = 0x1FF 12974; HASWELL-NEXT: # sched: [2:0.50] 12975; HASWELL-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12976; HASWELL-NEXT: # sched: [9:1.00] 12977; HASWELL-NEXT: sbbw $7, %di # sched: [2:0.50] 12978; HASWELL-NEXT: sbbw $7, (%rsi) # sched: [9:1.00] 12979; HASWELL-NEXT: sbbw %dx, %di # sched: [2:0.50] 12980; HASWELL-NEXT: sbbw %di, (%rsi) # sched: [9:1.00] 12981; HASWELL-NEXT: sbbw (%rsi), %di # sched: [7:0.50] 12982; HASWELL-NEXT: #NO_APP 12983; HASWELL-NEXT: retq # sched: [7:1.00] 12984; 12985; BROADWELL-LABEL: test_sbb_16: 12986; BROADWELL: # %bb.0: 12987; BROADWELL-NEXT: #APP 12988; BROADWELL-NEXT: sbbw $511, %ax # imm = 0x1FF 12989; BROADWELL-NEXT: # sched: [1:0.50] 12990; BROADWELL-NEXT: sbbw $511, %di # imm = 0x1FF 12991; BROADWELL-NEXT: # sched: [1:0.50] 12992; BROADWELL-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 12993; BROADWELL-NEXT: # sched: [8:1.00] 12994; BROADWELL-NEXT: sbbw $7, %di # sched: [1:0.50] 12995; BROADWELL-NEXT: sbbw $7, (%rsi) # sched: [8:1.00] 12996; BROADWELL-NEXT: sbbw %dx, %di # sched: [1:0.50] 12997; BROADWELL-NEXT: sbbw %di, (%rsi) # sched: [8:1.00] 12998; BROADWELL-NEXT: sbbw (%rsi), %di # sched: [6:0.50] 12999; BROADWELL-NEXT: #NO_APP 13000; BROADWELL-NEXT: retq # sched: [7:1.00] 13001; 13002; SKYLAKE-LABEL: test_sbb_16: 13003; SKYLAKE: # %bb.0: 13004; SKYLAKE-NEXT: #APP 13005; SKYLAKE-NEXT: sbbw $511, %ax # imm = 0x1FF 13006; SKYLAKE-NEXT: # sched: [1:0.50] 13007; SKYLAKE-NEXT: sbbw $511, %di # imm = 0x1FF 13008; SKYLAKE-NEXT: # sched: [1:0.50] 13009; SKYLAKE-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 13010; SKYLAKE-NEXT: # sched: [8:1.00] 13011; SKYLAKE-NEXT: sbbw $7, %di # sched: [1:0.50] 13012; SKYLAKE-NEXT: sbbw $7, (%rsi) # sched: [8:1.00] 13013; SKYLAKE-NEXT: sbbw %dx, %di # sched: [1:0.50] 13014; SKYLAKE-NEXT: sbbw %di, (%rsi) # sched: [8:1.00] 13015; SKYLAKE-NEXT: sbbw (%rsi), %di # sched: [6:0.50] 13016; SKYLAKE-NEXT: #NO_APP 13017; SKYLAKE-NEXT: retq # sched: [7:1.00] 13018; 13019; SKX-LABEL: test_sbb_16: 13020; SKX: # %bb.0: 13021; SKX-NEXT: #APP 13022; SKX-NEXT: sbbw $511, %ax # imm = 0x1FF 13023; SKX-NEXT: # sched: [1:0.50] 13024; SKX-NEXT: sbbw $511, %di # imm = 0x1FF 13025; SKX-NEXT: # sched: [1:0.50] 13026; SKX-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 13027; SKX-NEXT: # sched: [8:1.00] 13028; SKX-NEXT: sbbw $7, %di # sched: [1:0.50] 13029; SKX-NEXT: sbbw $7, (%rsi) # sched: [8:1.00] 13030; SKX-NEXT: sbbw %dx, %di # sched: [1:0.50] 13031; SKX-NEXT: sbbw %di, (%rsi) # sched: [8:1.00] 13032; SKX-NEXT: sbbw (%rsi), %di # sched: [6:0.50] 13033; SKX-NEXT: #NO_APP 13034; SKX-NEXT: retq # sched: [7:1.00] 13035; 13036; BTVER2-LABEL: test_sbb_16: 13037; BTVER2: # %bb.0: 13038; BTVER2-NEXT: #APP 13039; BTVER2-NEXT: sbbw $511, %ax # imm = 0x1FF 13040; BTVER2-NEXT: # sched: [1:1.00] 13041; BTVER2-NEXT: sbbw $511, %di # imm = 0x1FF 13042; BTVER2-NEXT: # sched: [1:1.00] 13043; BTVER2-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 13044; BTVER2-NEXT: # sched: [5:1.00] 13045; BTVER2-NEXT: sbbw $7, %di # sched: [1:1.00] 13046; BTVER2-NEXT: sbbw $7, (%rsi) # sched: [5:1.00] 13047; BTVER2-NEXT: sbbw %dx, %di # sched: [1:1.00] 13048; BTVER2-NEXT: sbbw %di, (%rsi) # sched: [5:1.00] 13049; BTVER2-NEXT: sbbw (%rsi), %di # sched: [4:1.00] 13050; BTVER2-NEXT: #NO_APP 13051; BTVER2-NEXT: retq # sched: [4:1.00] 13052; 13053; ZNVER1-LABEL: test_sbb_16: 13054; ZNVER1: # %bb.0: 13055; ZNVER1-NEXT: #APP 13056; ZNVER1-NEXT: sbbw $511, %ax # imm = 0x1FF 13057; ZNVER1-NEXT: # sched: [1:0.25] 13058; ZNVER1-NEXT: sbbw $511, %di # imm = 0x1FF 13059; ZNVER1-NEXT: # sched: [1:0.25] 13060; ZNVER1-NEXT: sbbw $511, (%rsi) # imm = 0x1FF 13061; ZNVER1-NEXT: # sched: [5:0.50] 13062; ZNVER1-NEXT: sbbw $7, %di # sched: [1:0.25] 13063; ZNVER1-NEXT: sbbw $7, (%rsi) # sched: [5:0.50] 13064; ZNVER1-NEXT: sbbw %dx, %di # sched: [1:0.25] 13065; ZNVER1-NEXT: sbbw %di, (%rsi) # sched: [5:0.50] 13066; ZNVER1-NEXT: sbbw (%rsi), %di # sched: [5:0.50] 13067; ZNVER1-NEXT: #NO_APP 13068; ZNVER1-NEXT: retq # sched: [1:0.50] 13069 tail call void asm "sbbw $3, %AX \0A\09 sbbw $3, $0 \0A\09 sbbw $3, $2 \0A\09 sbbw $4, $0 \0A\09 sbbw $4, $2 \0A\09 sbbw $1, $0 \0A\09 sbbw $0, $2 \0A\09 sbbw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 13070 ret void 13071} 13072define void @test_sbb_32(i32 %a0, i32* %a1, i32 %a2) optsize { 13073; GENERIC-LABEL: test_sbb_32: 13074; GENERIC: # %bb.0: 13075; GENERIC-NEXT: #APP 13076; GENERIC-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13077; GENERIC-NEXT: # sched: [2:0.67] 13078; GENERIC-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13079; GENERIC-NEXT: # sched: [2:0.67] 13080; GENERIC-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13081; GENERIC-NEXT: # sched: [9:1.00] 13082; GENERIC-NEXT: sbbl $7, %edi # sched: [2:0.67] 13083; GENERIC-NEXT: sbbl $7, (%rsi) # sched: [9:1.00] 13084; GENERIC-NEXT: sbbl %edx, %edi # sched: [2:0.67] 13085; GENERIC-NEXT: sbbl %edi, (%rsi) # sched: [9:1.00] 13086; GENERIC-NEXT: sbbl (%rsi), %edi # sched: [7:0.67] 13087; GENERIC-NEXT: #NO_APP 13088; GENERIC-NEXT: retq # sched: [1:1.00] 13089; 13090; ATOM-LABEL: test_sbb_32: 13091; ATOM: # %bb.0: 13092; ATOM-NEXT: #APP 13093; ATOM-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13094; ATOM-NEXT: # sched: [1:0.50] 13095; ATOM-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13096; ATOM-NEXT: # sched: [1:0.50] 13097; ATOM-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13098; ATOM-NEXT: # sched: [1:1.00] 13099; ATOM-NEXT: sbbl $7, %edi # sched: [1:0.50] 13100; ATOM-NEXT: sbbl $7, (%rsi) # sched: [1:1.00] 13101; ATOM-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13102; ATOM-NEXT: sbbl %edi, (%rsi) # sched: [1:1.00] 13103; ATOM-NEXT: sbbl (%rsi), %edi # sched: [1:1.00] 13104; ATOM-NEXT: #NO_APP 13105; ATOM-NEXT: retq # sched: [79:39.50] 13106; 13107; SLM-LABEL: test_sbb_32: 13108; SLM: # %bb.0: 13109; SLM-NEXT: #APP 13110; SLM-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13111; SLM-NEXT: # sched: [1:0.50] 13112; SLM-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13113; SLM-NEXT: # sched: [1:0.50] 13114; SLM-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13115; SLM-NEXT: # sched: [5:2.00] 13116; SLM-NEXT: sbbl $7, %edi # sched: [1:0.50] 13117; SLM-NEXT: sbbl $7, (%rsi) # sched: [5:2.00] 13118; SLM-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13119; SLM-NEXT: sbbl %edi, (%rsi) # sched: [5:2.00] 13120; SLM-NEXT: sbbl (%rsi), %edi # sched: [4:1.00] 13121; SLM-NEXT: #NO_APP 13122; SLM-NEXT: retq # sched: [4:1.00] 13123; 13124; SANDY-LABEL: test_sbb_32: 13125; SANDY: # %bb.0: 13126; SANDY-NEXT: #APP 13127; SANDY-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13128; SANDY-NEXT: # sched: [2:0.67] 13129; SANDY-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13130; SANDY-NEXT: # sched: [2:0.67] 13131; SANDY-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13132; SANDY-NEXT: # sched: [9:1.00] 13133; SANDY-NEXT: sbbl $7, %edi # sched: [2:0.67] 13134; SANDY-NEXT: sbbl $7, (%rsi) # sched: [9:1.00] 13135; SANDY-NEXT: sbbl %edx, %edi # sched: [2:0.67] 13136; SANDY-NEXT: sbbl %edi, (%rsi) # sched: [9:1.00] 13137; SANDY-NEXT: sbbl (%rsi), %edi # sched: [7:0.67] 13138; SANDY-NEXT: #NO_APP 13139; SANDY-NEXT: retq # sched: [1:1.00] 13140; 13141; HASWELL-LABEL: test_sbb_32: 13142; HASWELL: # %bb.0: 13143; HASWELL-NEXT: #APP 13144; HASWELL-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13145; HASWELL-NEXT: # sched: [2:0.50] 13146; HASWELL-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13147; HASWELL-NEXT: # sched: [2:0.50] 13148; HASWELL-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13149; HASWELL-NEXT: # sched: [9:1.00] 13150; HASWELL-NEXT: sbbl $7, %edi # sched: [2:0.50] 13151; HASWELL-NEXT: sbbl $7, (%rsi) # sched: [9:1.00] 13152; HASWELL-NEXT: sbbl %edx, %edi # sched: [2:0.50] 13153; HASWELL-NEXT: sbbl %edi, (%rsi) # sched: [9:1.00] 13154; HASWELL-NEXT: sbbl (%rsi), %edi # sched: [7:0.50] 13155; HASWELL-NEXT: #NO_APP 13156; HASWELL-NEXT: retq # sched: [7:1.00] 13157; 13158; BROADWELL-LABEL: test_sbb_32: 13159; BROADWELL: # %bb.0: 13160; BROADWELL-NEXT: #APP 13161; BROADWELL-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13162; BROADWELL-NEXT: # sched: [1:0.50] 13163; BROADWELL-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13164; BROADWELL-NEXT: # sched: [1:0.50] 13165; BROADWELL-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13166; BROADWELL-NEXT: # sched: [8:1.00] 13167; BROADWELL-NEXT: sbbl $7, %edi # sched: [1:0.50] 13168; BROADWELL-NEXT: sbbl $7, (%rsi) # sched: [8:1.00] 13169; BROADWELL-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13170; BROADWELL-NEXT: sbbl %edi, (%rsi) # sched: [8:1.00] 13171; BROADWELL-NEXT: sbbl (%rsi), %edi # sched: [6:0.50] 13172; BROADWELL-NEXT: #NO_APP 13173; BROADWELL-NEXT: retq # sched: [7:1.00] 13174; 13175; SKYLAKE-LABEL: test_sbb_32: 13176; SKYLAKE: # %bb.0: 13177; SKYLAKE-NEXT: #APP 13178; SKYLAKE-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13179; SKYLAKE-NEXT: # sched: [1:0.50] 13180; SKYLAKE-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13181; SKYLAKE-NEXT: # sched: [1:0.50] 13182; SKYLAKE-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13183; SKYLAKE-NEXT: # sched: [8:1.00] 13184; SKYLAKE-NEXT: sbbl $7, %edi # sched: [1:0.50] 13185; SKYLAKE-NEXT: sbbl $7, (%rsi) # sched: [8:1.00] 13186; SKYLAKE-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13187; SKYLAKE-NEXT: sbbl %edi, (%rsi) # sched: [8:1.00] 13188; SKYLAKE-NEXT: sbbl (%rsi), %edi # sched: [6:0.50] 13189; SKYLAKE-NEXT: #NO_APP 13190; SKYLAKE-NEXT: retq # sched: [7:1.00] 13191; 13192; SKX-LABEL: test_sbb_32: 13193; SKX: # %bb.0: 13194; SKX-NEXT: #APP 13195; SKX-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13196; SKX-NEXT: # sched: [1:0.50] 13197; SKX-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13198; SKX-NEXT: # sched: [1:0.50] 13199; SKX-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13200; SKX-NEXT: # sched: [8:1.00] 13201; SKX-NEXT: sbbl $7, %edi # sched: [1:0.50] 13202; SKX-NEXT: sbbl $7, (%rsi) # sched: [8:1.00] 13203; SKX-NEXT: sbbl %edx, %edi # sched: [1:0.50] 13204; SKX-NEXT: sbbl %edi, (%rsi) # sched: [8:1.00] 13205; SKX-NEXT: sbbl (%rsi), %edi # sched: [6:0.50] 13206; SKX-NEXT: #NO_APP 13207; SKX-NEXT: retq # sched: [7:1.00] 13208; 13209; BTVER2-LABEL: test_sbb_32: 13210; BTVER2: # %bb.0: 13211; BTVER2-NEXT: #APP 13212; BTVER2-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13213; BTVER2-NEXT: # sched: [1:1.00] 13214; BTVER2-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13215; BTVER2-NEXT: # sched: [1:1.00] 13216; BTVER2-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13217; BTVER2-NEXT: # sched: [5:1.00] 13218; BTVER2-NEXT: sbbl $7, %edi # sched: [1:1.00] 13219; BTVER2-NEXT: sbbl $7, (%rsi) # sched: [5:1.00] 13220; BTVER2-NEXT: sbbl %edx, %edi # sched: [1:1.00] 13221; BTVER2-NEXT: sbbl %edi, (%rsi) # sched: [5:1.00] 13222; BTVER2-NEXT: sbbl (%rsi), %edi # sched: [4:1.00] 13223; BTVER2-NEXT: #NO_APP 13224; BTVER2-NEXT: retq # sched: [4:1.00] 13225; 13226; ZNVER1-LABEL: test_sbb_32: 13227; ZNVER1: # %bb.0: 13228; ZNVER1-NEXT: #APP 13229; ZNVER1-NEXT: sbbl $665536, %eax # imm = 0xA27C0 13230; ZNVER1-NEXT: # sched: [1:0.25] 13231; ZNVER1-NEXT: sbbl $665536, %edi # imm = 0xA27C0 13232; ZNVER1-NEXT: # sched: [1:0.25] 13233; ZNVER1-NEXT: sbbl $665536, (%rsi) # imm = 0xA27C0 13234; ZNVER1-NEXT: # sched: [5:0.50] 13235; ZNVER1-NEXT: sbbl $7, %edi # sched: [1:0.25] 13236; ZNVER1-NEXT: sbbl $7, (%rsi) # sched: [5:0.50] 13237; ZNVER1-NEXT: sbbl %edx, %edi # sched: [1:0.25] 13238; ZNVER1-NEXT: sbbl %edi, (%rsi) # sched: [5:0.50] 13239; ZNVER1-NEXT: sbbl (%rsi), %edi # sched: [5:0.50] 13240; ZNVER1-NEXT: #NO_APP 13241; ZNVER1-NEXT: retq # sched: [1:0.50] 13242 tail call void asm "sbbl $3, %EAX \0A\09 sbbl $3, $0 \0A\09 sbbl $3, $2 \0A\09 sbbl $4, $0 \0A\09 sbbl $4, $2 \0A\09 sbbl $1, $0 \0A\09 sbbl $0, $2 \0A\09 sbbl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 13243 ret void 13244} 13245define void @test_sbb_64(i64 %a0, i64* %a1, i64 %a2) optsize { 13246; GENERIC-LABEL: test_sbb_64: 13247; GENERIC: # %bb.0: 13248; GENERIC-NEXT: #APP 13249; GENERIC-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13250; GENERIC-NEXT: # sched: [2:0.67] 13251; GENERIC-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13252; GENERIC-NEXT: # sched: [2:0.67] 13253; GENERIC-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13254; GENERIC-NEXT: # sched: [9:1.00] 13255; GENERIC-NEXT: sbbq $7, %rdi # sched: [2:0.67] 13256; GENERIC-NEXT: sbbq $7, (%rsi) # sched: [9:1.00] 13257; GENERIC-NEXT: sbbq %rdx, %rdi # sched: [2:0.67] 13258; GENERIC-NEXT: sbbq %rdi, (%rsi) # sched: [9:1.00] 13259; GENERIC-NEXT: sbbq (%rsi), %rdi # sched: [7:0.67] 13260; GENERIC-NEXT: #NO_APP 13261; GENERIC-NEXT: retq # sched: [1:1.00] 13262; 13263; ATOM-LABEL: test_sbb_64: 13264; ATOM: # %bb.0: 13265; ATOM-NEXT: #APP 13266; ATOM-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13267; ATOM-NEXT: # sched: [1:0.50] 13268; ATOM-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13269; ATOM-NEXT: # sched: [1:0.50] 13270; ATOM-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13271; ATOM-NEXT: # sched: [1:1.00] 13272; ATOM-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13273; ATOM-NEXT: sbbq $7, (%rsi) # sched: [1:1.00] 13274; ATOM-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13275; ATOM-NEXT: sbbq %rdi, (%rsi) # sched: [1:1.00] 13276; ATOM-NEXT: sbbq (%rsi), %rdi # sched: [1:1.00] 13277; ATOM-NEXT: #NO_APP 13278; ATOM-NEXT: retq # sched: [79:39.50] 13279; 13280; SLM-LABEL: test_sbb_64: 13281; SLM: # %bb.0: 13282; SLM-NEXT: #APP 13283; SLM-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13284; SLM-NEXT: # sched: [1:0.50] 13285; SLM-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13286; SLM-NEXT: # sched: [1:0.50] 13287; SLM-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13288; SLM-NEXT: # sched: [5:2.00] 13289; SLM-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13290; SLM-NEXT: sbbq $7, (%rsi) # sched: [5:2.00] 13291; SLM-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13292; SLM-NEXT: sbbq %rdi, (%rsi) # sched: [5:2.00] 13293; SLM-NEXT: sbbq (%rsi), %rdi # sched: [4:1.00] 13294; SLM-NEXT: #NO_APP 13295; SLM-NEXT: retq # sched: [4:1.00] 13296; 13297; SANDY-LABEL: test_sbb_64: 13298; SANDY: # %bb.0: 13299; SANDY-NEXT: #APP 13300; SANDY-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13301; SANDY-NEXT: # sched: [2:0.67] 13302; SANDY-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13303; SANDY-NEXT: # sched: [2:0.67] 13304; SANDY-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13305; SANDY-NEXT: # sched: [9:1.00] 13306; SANDY-NEXT: sbbq $7, %rdi # sched: [2:0.67] 13307; SANDY-NEXT: sbbq $7, (%rsi) # sched: [9:1.00] 13308; SANDY-NEXT: sbbq %rdx, %rdi # sched: [2:0.67] 13309; SANDY-NEXT: sbbq %rdi, (%rsi) # sched: [9:1.00] 13310; SANDY-NEXT: sbbq (%rsi), %rdi # sched: [7:0.67] 13311; SANDY-NEXT: #NO_APP 13312; SANDY-NEXT: retq # sched: [1:1.00] 13313; 13314; HASWELL-LABEL: test_sbb_64: 13315; HASWELL: # %bb.0: 13316; HASWELL-NEXT: #APP 13317; HASWELL-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13318; HASWELL-NEXT: # sched: [2:0.50] 13319; HASWELL-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13320; HASWELL-NEXT: # sched: [2:0.50] 13321; HASWELL-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13322; HASWELL-NEXT: # sched: [9:1.00] 13323; HASWELL-NEXT: sbbq $7, %rdi # sched: [2:0.50] 13324; HASWELL-NEXT: sbbq $7, (%rsi) # sched: [9:1.00] 13325; HASWELL-NEXT: sbbq %rdx, %rdi # sched: [2:0.50] 13326; HASWELL-NEXT: sbbq %rdi, (%rsi) # sched: [9:1.00] 13327; HASWELL-NEXT: sbbq (%rsi), %rdi # sched: [7:0.50] 13328; HASWELL-NEXT: #NO_APP 13329; HASWELL-NEXT: retq # sched: [7:1.00] 13330; 13331; BROADWELL-LABEL: test_sbb_64: 13332; BROADWELL: # %bb.0: 13333; BROADWELL-NEXT: #APP 13334; BROADWELL-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13335; BROADWELL-NEXT: # sched: [1:0.50] 13336; BROADWELL-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13337; BROADWELL-NEXT: # sched: [1:0.50] 13338; BROADWELL-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13339; BROADWELL-NEXT: # sched: [8:1.00] 13340; BROADWELL-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13341; BROADWELL-NEXT: sbbq $7, (%rsi) # sched: [8:1.00] 13342; BROADWELL-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13343; BROADWELL-NEXT: sbbq %rdi, (%rsi) # sched: [8:1.00] 13344; BROADWELL-NEXT: sbbq (%rsi), %rdi # sched: [6:0.50] 13345; BROADWELL-NEXT: #NO_APP 13346; BROADWELL-NEXT: retq # sched: [7:1.00] 13347; 13348; SKYLAKE-LABEL: test_sbb_64: 13349; SKYLAKE: # %bb.0: 13350; SKYLAKE-NEXT: #APP 13351; SKYLAKE-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13352; SKYLAKE-NEXT: # sched: [1:0.50] 13353; SKYLAKE-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13354; SKYLAKE-NEXT: # sched: [1:0.50] 13355; SKYLAKE-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13356; SKYLAKE-NEXT: # sched: [8:1.00] 13357; SKYLAKE-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13358; SKYLAKE-NEXT: sbbq $7, (%rsi) # sched: [8:1.00] 13359; SKYLAKE-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13360; SKYLAKE-NEXT: sbbq %rdi, (%rsi) # sched: [8:1.00] 13361; SKYLAKE-NEXT: sbbq (%rsi), %rdi # sched: [6:0.50] 13362; SKYLAKE-NEXT: #NO_APP 13363; SKYLAKE-NEXT: retq # sched: [7:1.00] 13364; 13365; SKX-LABEL: test_sbb_64: 13366; SKX: # %bb.0: 13367; SKX-NEXT: #APP 13368; SKX-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13369; SKX-NEXT: # sched: [1:0.50] 13370; SKX-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13371; SKX-NEXT: # sched: [1:0.50] 13372; SKX-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13373; SKX-NEXT: # sched: [8:1.00] 13374; SKX-NEXT: sbbq $7, %rdi # sched: [1:0.50] 13375; SKX-NEXT: sbbq $7, (%rsi) # sched: [8:1.00] 13376; SKX-NEXT: sbbq %rdx, %rdi # sched: [1:0.50] 13377; SKX-NEXT: sbbq %rdi, (%rsi) # sched: [8:1.00] 13378; SKX-NEXT: sbbq (%rsi), %rdi # sched: [6:0.50] 13379; SKX-NEXT: #NO_APP 13380; SKX-NEXT: retq # sched: [7:1.00] 13381; 13382; BTVER2-LABEL: test_sbb_64: 13383; BTVER2: # %bb.0: 13384; BTVER2-NEXT: #APP 13385; BTVER2-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13386; BTVER2-NEXT: # sched: [1:1.00] 13387; BTVER2-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13388; BTVER2-NEXT: # sched: [1:1.00] 13389; BTVER2-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13390; BTVER2-NEXT: # sched: [5:1.00] 13391; BTVER2-NEXT: sbbq $7, %rdi # sched: [1:1.00] 13392; BTVER2-NEXT: sbbq $7, (%rsi) # sched: [5:1.00] 13393; BTVER2-NEXT: sbbq %rdx, %rdi # sched: [1:1.00] 13394; BTVER2-NEXT: sbbq %rdi, (%rsi) # sched: [5:1.00] 13395; BTVER2-NEXT: sbbq (%rsi), %rdi # sched: [4:1.00] 13396; BTVER2-NEXT: #NO_APP 13397; BTVER2-NEXT: retq # sched: [4:1.00] 13398; 13399; ZNVER1-LABEL: test_sbb_64: 13400; ZNVER1: # %bb.0: 13401; ZNVER1-NEXT: #APP 13402; ZNVER1-NEXT: sbbq $665536, %rax # imm = 0xA27C0 13403; ZNVER1-NEXT: # sched: [1:0.25] 13404; ZNVER1-NEXT: sbbq $665536, %rdi # imm = 0xA27C0 13405; ZNVER1-NEXT: # sched: [1:0.25] 13406; ZNVER1-NEXT: sbbq $665536, (%rsi) # imm = 0xA27C0 13407; ZNVER1-NEXT: # sched: [5:0.50] 13408; ZNVER1-NEXT: sbbq $7, %rdi # sched: [1:0.25] 13409; ZNVER1-NEXT: sbbq $7, (%rsi) # sched: [5:0.50] 13410; ZNVER1-NEXT: sbbq %rdx, %rdi # sched: [1:0.25] 13411; ZNVER1-NEXT: sbbq %rdi, (%rsi) # sched: [5:0.50] 13412; ZNVER1-NEXT: sbbq (%rsi), %rdi # sched: [5:0.50] 13413; ZNVER1-NEXT: #NO_APP 13414; ZNVER1-NEXT: retq # sched: [1:0.50] 13415 tail call void asm "sbbq $3, %RAX \0A\09 sbbq $3, $0 \0A\09 sbbq $3, $2 \0A\09 sbbq $4, $0 \0A\09 sbbq $4, $2 \0A\09 sbbq $1, $0 \0A\09 sbbq $0, $2 \0A\09 sbbq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 13416 ret void 13417} 13418 13419define void @test_scas() optsize { 13420; GENERIC-LABEL: test_scas: 13421; GENERIC: # %bb.0: 13422; GENERIC-NEXT: #APP 13423; GENERIC-NEXT: scasb %es:(%rdi), %al # sched: [2:0.67] 13424; GENERIC-NEXT: scasw %es:(%rdi), %ax # sched: [2:0.67] 13425; GENERIC-NEXT: scasl %es:(%rdi), %eax # sched: [2:0.67] 13426; GENERIC-NEXT: scasq %es:(%rdi), %rax # sched: [2:0.67] 13427; GENERIC-NEXT: #NO_APP 13428; GENERIC-NEXT: retq # sched: [1:1.00] 13429; 13430; ATOM-LABEL: test_scas: 13431; ATOM: # %bb.0: 13432; ATOM-NEXT: #APP 13433; ATOM-NEXT: scasb %es:(%rdi), %al # sched: [2:1.00] 13434; ATOM-NEXT: scasw %es:(%rdi), %ax # sched: [2:1.00] 13435; ATOM-NEXT: scasl %es:(%rdi), %eax # sched: [2:1.00] 13436; ATOM-NEXT: scasq %es:(%rdi), %rax # sched: [2:1.00] 13437; ATOM-NEXT: #NO_APP 13438; ATOM-NEXT: retq # sched: [79:39.50] 13439; 13440; SLM-LABEL: test_scas: 13441; SLM: # %bb.0: 13442; SLM-NEXT: #APP 13443; SLM-NEXT: scasb %es:(%rdi), %al # sched: [100:1.00] 13444; SLM-NEXT: scasw %es:(%rdi), %ax # sched: [100:1.00] 13445; SLM-NEXT: scasl %es:(%rdi), %eax # sched: [100:1.00] 13446; SLM-NEXT: scasq %es:(%rdi), %rax # sched: [100:1.00] 13447; SLM-NEXT: #NO_APP 13448; SLM-NEXT: retq # sched: [4:1.00] 13449; 13450; SANDY-LABEL: test_scas: 13451; SANDY: # %bb.0: 13452; SANDY-NEXT: #APP 13453; SANDY-NEXT: scasb %es:(%rdi), %al # sched: [2:0.67] 13454; SANDY-NEXT: scasw %es:(%rdi), %ax # sched: [2:0.67] 13455; SANDY-NEXT: scasl %es:(%rdi), %eax # sched: [2:0.67] 13456; SANDY-NEXT: scasq %es:(%rdi), %rax # sched: [2:0.67] 13457; SANDY-NEXT: #NO_APP 13458; SANDY-NEXT: retq # sched: [1:1.00] 13459; 13460; HASWELL-LABEL: test_scas: 13461; HASWELL: # %bb.0: 13462; HASWELL-NEXT: #APP 13463; HASWELL-NEXT: scasb %es:(%rdi), %al # sched: [7:0.50] 13464; HASWELL-NEXT: scasw %es:(%rdi), %ax # sched: [7:0.50] 13465; HASWELL-NEXT: scasl %es:(%rdi), %eax # sched: [7:0.50] 13466; HASWELL-NEXT: scasq %es:(%rdi), %rax # sched: [7:0.50] 13467; HASWELL-NEXT: #NO_APP 13468; HASWELL-NEXT: retq # sched: [7:1.00] 13469; 13470; BROADWELL-LABEL: test_scas: 13471; BROADWELL: # %bb.0: 13472; BROADWELL-NEXT: #APP 13473; BROADWELL-NEXT: scasb %es:(%rdi), %al # sched: [7:0.50] 13474; BROADWELL-NEXT: scasw %es:(%rdi), %ax # sched: [7:0.50] 13475; BROADWELL-NEXT: scasl %es:(%rdi), %eax # sched: [7:0.50] 13476; BROADWELL-NEXT: scasq %es:(%rdi), %rax # sched: [7:0.50] 13477; BROADWELL-NEXT: #NO_APP 13478; BROADWELL-NEXT: retq # sched: [7:1.00] 13479; 13480; SKYLAKE-LABEL: test_scas: 13481; SKYLAKE: # %bb.0: 13482; SKYLAKE-NEXT: #APP 13483; SKYLAKE-NEXT: scasb %es:(%rdi), %al # sched: [7:0.50] 13484; SKYLAKE-NEXT: scasw %es:(%rdi), %ax # sched: [7:0.50] 13485; SKYLAKE-NEXT: scasl %es:(%rdi), %eax # sched: [7:0.50] 13486; SKYLAKE-NEXT: scasq %es:(%rdi), %rax # sched: [7:0.50] 13487; SKYLAKE-NEXT: #NO_APP 13488; SKYLAKE-NEXT: retq # sched: [7:1.00] 13489; 13490; SKX-LABEL: test_scas: 13491; SKX: # %bb.0: 13492; SKX-NEXT: #APP 13493; SKX-NEXT: scasb %es:(%rdi), %al # sched: [7:0.50] 13494; SKX-NEXT: scasw %es:(%rdi), %ax # sched: [7:0.50] 13495; SKX-NEXT: scasl %es:(%rdi), %eax # sched: [7:0.50] 13496; SKX-NEXT: scasq %es:(%rdi), %rax # sched: [7:0.50] 13497; SKX-NEXT: #NO_APP 13498; SKX-NEXT: retq # sched: [7:1.00] 13499; 13500; BTVER2-LABEL: test_scas: 13501; BTVER2: # %bb.0: 13502; BTVER2-NEXT: #APP 13503; BTVER2-NEXT: scasb %es:(%rdi), %al # sched: [100:0.50] 13504; BTVER2-NEXT: scasw %es:(%rdi), %ax # sched: [100:0.50] 13505; BTVER2-NEXT: scasl %es:(%rdi), %eax # sched: [100:0.50] 13506; BTVER2-NEXT: scasq %es:(%rdi), %rax # sched: [100:0.50] 13507; BTVER2-NEXT: #NO_APP 13508; BTVER2-NEXT: retq # sched: [4:1.00] 13509; 13510; ZNVER1-LABEL: test_scas: 13511; ZNVER1: # %bb.0: 13512; ZNVER1-NEXT: #APP 13513; ZNVER1-NEXT: scasb %es:(%rdi), %al # sched: [100:0.25] 13514; ZNVER1-NEXT: scasw %es:(%rdi), %ax # sched: [100:0.25] 13515; ZNVER1-NEXT: scasl %es:(%rdi), %eax # sched: [100:0.25] 13516; ZNVER1-NEXT: scasq %es:(%rdi), %rax # sched: [100:0.25] 13517; ZNVER1-NEXT: #NO_APP 13518; ZNVER1-NEXT: retq # sched: [1:0.50] 13519 call void asm sideeffect "scasb \0A\09 scasw \0A\09 scasl \0A\09 scasq", ""() 13520 ret void 13521} 13522 13523define void @test_setcc(i8 %a0, i8 *%a1) optsize { 13524; GENERIC-LABEL: test_setcc: 13525; GENERIC: # %bb.0: 13526; GENERIC-NEXT: #APP 13527; GENERIC-NEXT: seto %dil # sched: [1:0.50] 13528; GENERIC-NEXT: setno %dil # sched: [1:0.50] 13529; GENERIC-NEXT: setb %dil # sched: [1:0.50] 13530; GENERIC-NEXT: setae %dil # sched: [1:0.50] 13531; GENERIC-NEXT: sete %dil # sched: [1:0.50] 13532; GENERIC-NEXT: setne %dil # sched: [1:0.50] 13533; GENERIC-NEXT: setbe %dil # sched: [2:1.00] 13534; GENERIC-NEXT: seta %dil # sched: [2:1.00] 13535; GENERIC-NEXT: sets %dil # sched: [1:0.50] 13536; GENERIC-NEXT: setns %dil # sched: [1:0.50] 13537; GENERIC-NEXT: setp %dil # sched: [1:0.50] 13538; GENERIC-NEXT: setnp %dil # sched: [1:0.50] 13539; GENERIC-NEXT: setl %dil # sched: [1:0.50] 13540; GENERIC-NEXT: setge %dil # sched: [1:0.50] 13541; GENERIC-NEXT: setle %dil # sched: [1:0.50] 13542; GENERIC-NEXT: setg %dil # sched: [1:0.50] 13543; GENERIC-NEXT: seto (%rsi) # sched: [2:1.00] 13544; GENERIC-NEXT: setno (%rsi) # sched: [2:1.00] 13545; GENERIC-NEXT: setb (%rsi) # sched: [2:1.00] 13546; GENERIC-NEXT: setae (%rsi) # sched: [2:1.00] 13547; GENERIC-NEXT: sete (%rsi) # sched: [2:1.00] 13548; GENERIC-NEXT: setne (%rsi) # sched: [2:1.00] 13549; GENERIC-NEXT: setbe (%rsi) # sched: [3:1.00] 13550; GENERIC-NEXT: seta (%rsi) # sched: [3:1.00] 13551; GENERIC-NEXT: sets (%rsi) # sched: [2:1.00] 13552; GENERIC-NEXT: setns (%rsi) # sched: [2:1.00] 13553; GENERIC-NEXT: setp (%rsi) # sched: [2:1.00] 13554; GENERIC-NEXT: setnp (%rsi) # sched: [2:1.00] 13555; GENERIC-NEXT: setl (%rsi) # sched: [2:1.00] 13556; GENERIC-NEXT: setge (%rsi) # sched: [2:1.00] 13557; GENERIC-NEXT: setle (%rsi) # sched: [2:1.00] 13558; GENERIC-NEXT: setg (%rsi) # sched: [2:1.00] 13559; GENERIC-NEXT: #NO_APP 13560; GENERIC-NEXT: retq # sched: [1:1.00] 13561; 13562; ATOM-LABEL: test_setcc: 13563; ATOM: # %bb.0: 13564; ATOM-NEXT: #APP 13565; ATOM-NEXT: seto %dil # sched: [1:0.50] 13566; ATOM-NEXT: setno %dil # sched: [1:0.50] 13567; ATOM-NEXT: setb %dil # sched: [1:0.50] 13568; ATOM-NEXT: setae %dil # sched: [1:0.50] 13569; ATOM-NEXT: sete %dil # sched: [1:0.50] 13570; ATOM-NEXT: setne %dil # sched: [1:0.50] 13571; ATOM-NEXT: setbe %dil # sched: [1:0.50] 13572; ATOM-NEXT: seta %dil # sched: [1:0.50] 13573; ATOM-NEXT: sets %dil # sched: [1:0.50] 13574; ATOM-NEXT: setns %dil # sched: [1:0.50] 13575; ATOM-NEXT: setp %dil # sched: [1:0.50] 13576; ATOM-NEXT: setnp %dil # sched: [1:0.50] 13577; ATOM-NEXT: setl %dil # sched: [1:0.50] 13578; ATOM-NEXT: setge %dil # sched: [1:0.50] 13579; ATOM-NEXT: setle %dil # sched: [1:0.50] 13580; ATOM-NEXT: setg %dil # sched: [1:0.50] 13581; ATOM-NEXT: seto (%rsi) # sched: [2:1.00] 13582; ATOM-NEXT: setno (%rsi) # sched: [2:1.00] 13583; ATOM-NEXT: setb (%rsi) # sched: [2:1.00] 13584; ATOM-NEXT: setae (%rsi) # sched: [2:1.00] 13585; ATOM-NEXT: sete (%rsi) # sched: [2:1.00] 13586; ATOM-NEXT: setne (%rsi) # sched: [2:1.00] 13587; ATOM-NEXT: setbe (%rsi) # sched: [2:1.00] 13588; ATOM-NEXT: seta (%rsi) # sched: [2:1.00] 13589; ATOM-NEXT: sets (%rsi) # sched: [2:1.00] 13590; ATOM-NEXT: setns (%rsi) # sched: [2:1.00] 13591; ATOM-NEXT: setp (%rsi) # sched: [2:1.00] 13592; ATOM-NEXT: setnp (%rsi) # sched: [2:1.00] 13593; ATOM-NEXT: setl (%rsi) # sched: [2:1.00] 13594; ATOM-NEXT: setge (%rsi) # sched: [2:1.00] 13595; ATOM-NEXT: setle (%rsi) # sched: [2:1.00] 13596; ATOM-NEXT: setg (%rsi) # sched: [2:1.00] 13597; ATOM-NEXT: #NO_APP 13598; ATOM-NEXT: retq # sched: [79:39.50] 13599; 13600; SLM-LABEL: test_setcc: 13601; SLM: # %bb.0: 13602; SLM-NEXT: #APP 13603; SLM-NEXT: seto %dil # sched: [1:0.50] 13604; SLM-NEXT: setno %dil # sched: [1:0.50] 13605; SLM-NEXT: setb %dil # sched: [1:0.50] 13606; SLM-NEXT: setae %dil # sched: [1:0.50] 13607; SLM-NEXT: sete %dil # sched: [1:0.50] 13608; SLM-NEXT: setne %dil # sched: [1:0.50] 13609; SLM-NEXT: setbe %dil # sched: [1:0.50] 13610; SLM-NEXT: seta %dil # sched: [1:0.50] 13611; SLM-NEXT: sets %dil # sched: [1:0.50] 13612; SLM-NEXT: setns %dil # sched: [1:0.50] 13613; SLM-NEXT: setp %dil # sched: [1:0.50] 13614; SLM-NEXT: setnp %dil # sched: [1:0.50] 13615; SLM-NEXT: setl %dil # sched: [1:0.50] 13616; SLM-NEXT: setge %dil # sched: [1:0.50] 13617; SLM-NEXT: setle %dil # sched: [1:0.50] 13618; SLM-NEXT: setg %dil # sched: [1:0.50] 13619; SLM-NEXT: seto (%rsi) # sched: [1:1.00] 13620; SLM-NEXT: setno (%rsi) # sched: [1:1.00] 13621; SLM-NEXT: setb (%rsi) # sched: [1:1.00] 13622; SLM-NEXT: setae (%rsi) # sched: [1:1.00] 13623; SLM-NEXT: sete (%rsi) # sched: [1:1.00] 13624; SLM-NEXT: setne (%rsi) # sched: [1:1.00] 13625; SLM-NEXT: setbe (%rsi) # sched: [1:1.00] 13626; SLM-NEXT: seta (%rsi) # sched: [1:1.00] 13627; SLM-NEXT: sets (%rsi) # sched: [1:1.00] 13628; SLM-NEXT: setns (%rsi) # sched: [1:1.00] 13629; SLM-NEXT: setp (%rsi) # sched: [1:1.00] 13630; SLM-NEXT: setnp (%rsi) # sched: [1:1.00] 13631; SLM-NEXT: setl (%rsi) # sched: [1:1.00] 13632; SLM-NEXT: setge (%rsi) # sched: [1:1.00] 13633; SLM-NEXT: setle (%rsi) # sched: [1:1.00] 13634; SLM-NEXT: setg (%rsi) # sched: [1:1.00] 13635; SLM-NEXT: #NO_APP 13636; SLM-NEXT: retq # sched: [4:1.00] 13637; 13638; SANDY-LABEL: test_setcc: 13639; SANDY: # %bb.0: 13640; SANDY-NEXT: #APP 13641; SANDY-NEXT: seto %dil # sched: [1:0.50] 13642; SANDY-NEXT: setno %dil # sched: [1:0.50] 13643; SANDY-NEXT: setb %dil # sched: [1:0.50] 13644; SANDY-NEXT: setae %dil # sched: [1:0.50] 13645; SANDY-NEXT: sete %dil # sched: [1:0.50] 13646; SANDY-NEXT: setne %dil # sched: [1:0.50] 13647; SANDY-NEXT: setbe %dil # sched: [2:1.00] 13648; SANDY-NEXT: seta %dil # sched: [2:1.00] 13649; SANDY-NEXT: sets %dil # sched: [1:0.50] 13650; SANDY-NEXT: setns %dil # sched: [1:0.50] 13651; SANDY-NEXT: setp %dil # sched: [1:0.50] 13652; SANDY-NEXT: setnp %dil # sched: [1:0.50] 13653; SANDY-NEXT: setl %dil # sched: [1:0.50] 13654; SANDY-NEXT: setge %dil # sched: [1:0.50] 13655; SANDY-NEXT: setle %dil # sched: [1:0.50] 13656; SANDY-NEXT: setg %dil # sched: [1:0.50] 13657; SANDY-NEXT: seto (%rsi) # sched: [2:1.00] 13658; SANDY-NEXT: setno (%rsi) # sched: [2:1.00] 13659; SANDY-NEXT: setb (%rsi) # sched: [2:1.00] 13660; SANDY-NEXT: setae (%rsi) # sched: [2:1.00] 13661; SANDY-NEXT: sete (%rsi) # sched: [2:1.00] 13662; SANDY-NEXT: setne (%rsi) # sched: [2:1.00] 13663; SANDY-NEXT: setbe (%rsi) # sched: [3:1.00] 13664; SANDY-NEXT: seta (%rsi) # sched: [3:1.00] 13665; SANDY-NEXT: sets (%rsi) # sched: [2:1.00] 13666; SANDY-NEXT: setns (%rsi) # sched: [2:1.00] 13667; SANDY-NEXT: setp (%rsi) # sched: [2:1.00] 13668; SANDY-NEXT: setnp (%rsi) # sched: [2:1.00] 13669; SANDY-NEXT: setl (%rsi) # sched: [2:1.00] 13670; SANDY-NEXT: setge (%rsi) # sched: [2:1.00] 13671; SANDY-NEXT: setle (%rsi) # sched: [2:1.00] 13672; SANDY-NEXT: setg (%rsi) # sched: [2:1.00] 13673; SANDY-NEXT: #NO_APP 13674; SANDY-NEXT: retq # sched: [1:1.00] 13675; 13676; HASWELL-LABEL: test_setcc: 13677; HASWELL: # %bb.0: 13678; HASWELL-NEXT: #APP 13679; HASWELL-NEXT: seto %dil # sched: [1:0.50] 13680; HASWELL-NEXT: setno %dil # sched: [1:0.50] 13681; HASWELL-NEXT: setb %dil # sched: [1:0.50] 13682; HASWELL-NEXT: setae %dil # sched: [1:0.50] 13683; HASWELL-NEXT: sete %dil # sched: [1:0.50] 13684; HASWELL-NEXT: setne %dil # sched: [1:0.50] 13685; HASWELL-NEXT: setbe %dil # sched: [2:0.50] 13686; HASWELL-NEXT: seta %dil # sched: [2:0.50] 13687; HASWELL-NEXT: sets %dil # sched: [1:0.50] 13688; HASWELL-NEXT: setns %dil # sched: [1:0.50] 13689; HASWELL-NEXT: setp %dil # sched: [1:0.50] 13690; HASWELL-NEXT: setnp %dil # sched: [1:0.50] 13691; HASWELL-NEXT: setl %dil # sched: [1:0.50] 13692; HASWELL-NEXT: setge %dil # sched: [1:0.50] 13693; HASWELL-NEXT: setle %dil # sched: [1:0.50] 13694; HASWELL-NEXT: setg %dil # sched: [1:0.50] 13695; HASWELL-NEXT: seto (%rsi) # sched: [2:1.00] 13696; HASWELL-NEXT: setno (%rsi) # sched: [2:1.00] 13697; HASWELL-NEXT: setb (%rsi) # sched: [2:1.00] 13698; HASWELL-NEXT: setae (%rsi) # sched: [2:1.00] 13699; HASWELL-NEXT: sete (%rsi) # sched: [2:1.00] 13700; HASWELL-NEXT: setne (%rsi) # sched: [2:1.00] 13701; HASWELL-NEXT: setbe (%rsi) # sched: [3:1.00] 13702; HASWELL-NEXT: seta (%rsi) # sched: [3:1.00] 13703; HASWELL-NEXT: sets (%rsi) # sched: [2:1.00] 13704; HASWELL-NEXT: setns (%rsi) # sched: [2:1.00] 13705; HASWELL-NEXT: setp (%rsi) # sched: [2:1.00] 13706; HASWELL-NEXT: setnp (%rsi) # sched: [2:1.00] 13707; HASWELL-NEXT: setl (%rsi) # sched: [2:1.00] 13708; HASWELL-NEXT: setge (%rsi) # sched: [2:1.00] 13709; HASWELL-NEXT: setle (%rsi) # sched: [2:1.00] 13710; HASWELL-NEXT: setg (%rsi) # sched: [2:1.00] 13711; HASWELL-NEXT: #NO_APP 13712; HASWELL-NEXT: retq # sched: [7:1.00] 13713; 13714; BROADWELL-LABEL: test_setcc: 13715; BROADWELL: # %bb.0: 13716; BROADWELL-NEXT: #APP 13717; BROADWELL-NEXT: seto %dil # sched: [1:0.50] 13718; BROADWELL-NEXT: setno %dil # sched: [1:0.50] 13719; BROADWELL-NEXT: setb %dil # sched: [1:0.50] 13720; BROADWELL-NEXT: setae %dil # sched: [1:0.50] 13721; BROADWELL-NEXT: sete %dil # sched: [1:0.50] 13722; BROADWELL-NEXT: setne %dil # sched: [1:0.50] 13723; BROADWELL-NEXT: setbe %dil # sched: [2:0.50] 13724; BROADWELL-NEXT: seta %dil # sched: [2:0.50] 13725; BROADWELL-NEXT: sets %dil # sched: [1:0.50] 13726; BROADWELL-NEXT: setns %dil # sched: [1:0.50] 13727; BROADWELL-NEXT: setp %dil # sched: [1:0.50] 13728; BROADWELL-NEXT: setnp %dil # sched: [1:0.50] 13729; BROADWELL-NEXT: setl %dil # sched: [1:0.50] 13730; BROADWELL-NEXT: setge %dil # sched: [1:0.50] 13731; BROADWELL-NEXT: setle %dil # sched: [1:0.50] 13732; BROADWELL-NEXT: setg %dil # sched: [1:0.50] 13733; BROADWELL-NEXT: seto (%rsi) # sched: [2:1.00] 13734; BROADWELL-NEXT: setno (%rsi) # sched: [2:1.00] 13735; BROADWELL-NEXT: setb (%rsi) # sched: [2:1.00] 13736; BROADWELL-NEXT: setae (%rsi) # sched: [2:1.00] 13737; BROADWELL-NEXT: sete (%rsi) # sched: [2:1.00] 13738; BROADWELL-NEXT: setne (%rsi) # sched: [2:1.00] 13739; BROADWELL-NEXT: setbe (%rsi) # sched: [3:1.00] 13740; BROADWELL-NEXT: seta (%rsi) # sched: [3:1.00] 13741; BROADWELL-NEXT: sets (%rsi) # sched: [2:1.00] 13742; BROADWELL-NEXT: setns (%rsi) # sched: [2:1.00] 13743; BROADWELL-NEXT: setp (%rsi) # sched: [2:1.00] 13744; BROADWELL-NEXT: setnp (%rsi) # sched: [2:1.00] 13745; BROADWELL-NEXT: setl (%rsi) # sched: [2:1.00] 13746; BROADWELL-NEXT: setge (%rsi) # sched: [2:1.00] 13747; BROADWELL-NEXT: setle (%rsi) # sched: [2:1.00] 13748; BROADWELL-NEXT: setg (%rsi) # sched: [2:1.00] 13749; BROADWELL-NEXT: #NO_APP 13750; BROADWELL-NEXT: retq # sched: [7:1.00] 13751; 13752; SKYLAKE-LABEL: test_setcc: 13753; SKYLAKE: # %bb.0: 13754; SKYLAKE-NEXT: #APP 13755; SKYLAKE-NEXT: seto %dil # sched: [1:0.50] 13756; SKYLAKE-NEXT: setno %dil # sched: [1:0.50] 13757; SKYLAKE-NEXT: setb %dil # sched: [1:0.50] 13758; SKYLAKE-NEXT: setae %dil # sched: [1:0.50] 13759; SKYLAKE-NEXT: sete %dil # sched: [1:0.50] 13760; SKYLAKE-NEXT: setne %dil # sched: [1:0.50] 13761; SKYLAKE-NEXT: setbe %dil # sched: [2:1.00] 13762; SKYLAKE-NEXT: seta %dil # sched: [2:1.00] 13763; SKYLAKE-NEXT: sets %dil # sched: [1:0.50] 13764; SKYLAKE-NEXT: setns %dil # sched: [1:0.50] 13765; SKYLAKE-NEXT: setp %dil # sched: [1:0.50] 13766; SKYLAKE-NEXT: setnp %dil # sched: [1:0.50] 13767; SKYLAKE-NEXT: setl %dil # sched: [1:0.50] 13768; SKYLAKE-NEXT: setge %dil # sched: [1:0.50] 13769; SKYLAKE-NEXT: setle %dil # sched: [1:0.50] 13770; SKYLAKE-NEXT: setg %dil # sched: [1:0.50] 13771; SKYLAKE-NEXT: seto (%rsi) # sched: [2:1.00] 13772; SKYLAKE-NEXT: setno (%rsi) # sched: [2:1.00] 13773; SKYLAKE-NEXT: setb (%rsi) # sched: [2:1.00] 13774; SKYLAKE-NEXT: setae (%rsi) # sched: [2:1.00] 13775; SKYLAKE-NEXT: sete (%rsi) # sched: [2:1.00] 13776; SKYLAKE-NEXT: setne (%rsi) # sched: [2:1.00] 13777; SKYLAKE-NEXT: setbe (%rsi) # sched: [3:1.00] 13778; SKYLAKE-NEXT: seta (%rsi) # sched: [3:1.00] 13779; SKYLAKE-NEXT: sets (%rsi) # sched: [2:1.00] 13780; SKYLAKE-NEXT: setns (%rsi) # sched: [2:1.00] 13781; SKYLAKE-NEXT: setp (%rsi) # sched: [2:1.00] 13782; SKYLAKE-NEXT: setnp (%rsi) # sched: [2:1.00] 13783; SKYLAKE-NEXT: setl (%rsi) # sched: [2:1.00] 13784; SKYLAKE-NEXT: setge (%rsi) # sched: [2:1.00] 13785; SKYLAKE-NEXT: setle (%rsi) # sched: [2:1.00] 13786; SKYLAKE-NEXT: setg (%rsi) # sched: [2:1.00] 13787; SKYLAKE-NEXT: #NO_APP 13788; SKYLAKE-NEXT: retq # sched: [7:1.00] 13789; 13790; SKX-LABEL: test_setcc: 13791; SKX: # %bb.0: 13792; SKX-NEXT: #APP 13793; SKX-NEXT: seto %dil # sched: [1:0.50] 13794; SKX-NEXT: setno %dil # sched: [1:0.50] 13795; SKX-NEXT: setb %dil # sched: [1:0.50] 13796; SKX-NEXT: setae %dil # sched: [1:0.50] 13797; SKX-NEXT: sete %dil # sched: [1:0.50] 13798; SKX-NEXT: setne %dil # sched: [1:0.50] 13799; SKX-NEXT: setbe %dil # sched: [2:1.00] 13800; SKX-NEXT: seta %dil # sched: [2:1.00] 13801; SKX-NEXT: sets %dil # sched: [1:0.50] 13802; SKX-NEXT: setns %dil # sched: [1:0.50] 13803; SKX-NEXT: setp %dil # sched: [1:0.50] 13804; SKX-NEXT: setnp %dil # sched: [1:0.50] 13805; SKX-NEXT: setl %dil # sched: [1:0.50] 13806; SKX-NEXT: setge %dil # sched: [1:0.50] 13807; SKX-NEXT: setle %dil # sched: [1:0.50] 13808; SKX-NEXT: setg %dil # sched: [1:0.50] 13809; SKX-NEXT: seto (%rsi) # sched: [2:1.00] 13810; SKX-NEXT: setno (%rsi) # sched: [2:1.00] 13811; SKX-NEXT: setb (%rsi) # sched: [2:1.00] 13812; SKX-NEXT: setae (%rsi) # sched: [2:1.00] 13813; SKX-NEXT: sete (%rsi) # sched: [2:1.00] 13814; SKX-NEXT: setne (%rsi) # sched: [2:1.00] 13815; SKX-NEXT: setbe (%rsi) # sched: [3:1.00] 13816; SKX-NEXT: seta (%rsi) # sched: [3:1.00] 13817; SKX-NEXT: sets (%rsi) # sched: [2:1.00] 13818; SKX-NEXT: setns (%rsi) # sched: [2:1.00] 13819; SKX-NEXT: setp (%rsi) # sched: [2:1.00] 13820; SKX-NEXT: setnp (%rsi) # sched: [2:1.00] 13821; SKX-NEXT: setl (%rsi) # sched: [2:1.00] 13822; SKX-NEXT: setge (%rsi) # sched: [2:1.00] 13823; SKX-NEXT: setle (%rsi) # sched: [2:1.00] 13824; SKX-NEXT: setg (%rsi) # sched: [2:1.00] 13825; SKX-NEXT: #NO_APP 13826; SKX-NEXT: retq # sched: [7:1.00] 13827; 13828; BTVER2-LABEL: test_setcc: 13829; BTVER2: # %bb.0: 13830; BTVER2-NEXT: #APP 13831; BTVER2-NEXT: seto %dil # sched: [1:0.50] 13832; BTVER2-NEXT: setno %dil # sched: [1:0.50] 13833; BTVER2-NEXT: setb %dil # sched: [1:0.50] 13834; BTVER2-NEXT: setae %dil # sched: [1:0.50] 13835; BTVER2-NEXT: sete %dil # sched: [1:0.50] 13836; BTVER2-NEXT: setne %dil # sched: [1:0.50] 13837; BTVER2-NEXT: setbe %dil # sched: [1:0.50] 13838; BTVER2-NEXT: seta %dil # sched: [1:0.50] 13839; BTVER2-NEXT: sets %dil # sched: [1:0.50] 13840; BTVER2-NEXT: setns %dil # sched: [1:0.50] 13841; BTVER2-NEXT: setp %dil # sched: [1:0.50] 13842; BTVER2-NEXT: setnp %dil # sched: [1:0.50] 13843; BTVER2-NEXT: setl %dil # sched: [1:0.50] 13844; BTVER2-NEXT: setge %dil # sched: [1:0.50] 13845; BTVER2-NEXT: setle %dil # sched: [1:0.50] 13846; BTVER2-NEXT: setg %dil # sched: [1:0.50] 13847; BTVER2-NEXT: seto (%rsi) # sched: [1:1.00] 13848; BTVER2-NEXT: setno (%rsi) # sched: [1:1.00] 13849; BTVER2-NEXT: setb (%rsi) # sched: [1:1.00] 13850; BTVER2-NEXT: setae (%rsi) # sched: [1:1.00] 13851; BTVER2-NEXT: sete (%rsi) # sched: [1:1.00] 13852; BTVER2-NEXT: setne (%rsi) # sched: [1:1.00] 13853; BTVER2-NEXT: setbe (%rsi) # sched: [1:1.00] 13854; BTVER2-NEXT: seta (%rsi) # sched: [1:1.00] 13855; BTVER2-NEXT: sets (%rsi) # sched: [1:1.00] 13856; BTVER2-NEXT: setns (%rsi) # sched: [1:1.00] 13857; BTVER2-NEXT: setp (%rsi) # sched: [1:1.00] 13858; BTVER2-NEXT: setnp (%rsi) # sched: [1:1.00] 13859; BTVER2-NEXT: setl (%rsi) # sched: [1:1.00] 13860; BTVER2-NEXT: setge (%rsi) # sched: [1:1.00] 13861; BTVER2-NEXT: setle (%rsi) # sched: [1:1.00] 13862; BTVER2-NEXT: setg (%rsi) # sched: [1:1.00] 13863; BTVER2-NEXT: #NO_APP 13864; BTVER2-NEXT: retq # sched: [4:1.00] 13865; 13866; ZNVER1-LABEL: test_setcc: 13867; ZNVER1: # %bb.0: 13868; ZNVER1-NEXT: #APP 13869; ZNVER1-NEXT: seto %dil # sched: [1:0.25] 13870; ZNVER1-NEXT: setno %dil # sched: [1:0.25] 13871; ZNVER1-NEXT: setb %dil # sched: [1:0.25] 13872; ZNVER1-NEXT: setae %dil # sched: [1:0.25] 13873; ZNVER1-NEXT: sete %dil # sched: [1:0.25] 13874; ZNVER1-NEXT: setne %dil # sched: [1:0.25] 13875; ZNVER1-NEXT: setbe %dil # sched: [1:0.25] 13876; ZNVER1-NEXT: seta %dil # sched: [1:0.25] 13877; ZNVER1-NEXT: sets %dil # sched: [1:0.25] 13878; ZNVER1-NEXT: setns %dil # sched: [1:0.25] 13879; ZNVER1-NEXT: setp %dil # sched: [1:0.25] 13880; ZNVER1-NEXT: setnp %dil # sched: [1:0.25] 13881; ZNVER1-NEXT: setl %dil # sched: [1:0.25] 13882; ZNVER1-NEXT: setge %dil # sched: [1:0.25] 13883; ZNVER1-NEXT: setle %dil # sched: [1:0.25] 13884; ZNVER1-NEXT: setg %dil # sched: [1:0.25] 13885; ZNVER1-NEXT: seto (%rsi) # sched: [1:0.50] 13886; ZNVER1-NEXT: setno (%rsi) # sched: [1:0.50] 13887; ZNVER1-NEXT: setb (%rsi) # sched: [1:0.50] 13888; ZNVER1-NEXT: setae (%rsi) # sched: [1:0.50] 13889; ZNVER1-NEXT: sete (%rsi) # sched: [1:0.50] 13890; ZNVER1-NEXT: setne (%rsi) # sched: [1:0.50] 13891; ZNVER1-NEXT: setbe (%rsi) # sched: [1:0.50] 13892; ZNVER1-NEXT: seta (%rsi) # sched: [1:0.50] 13893; ZNVER1-NEXT: sets (%rsi) # sched: [1:0.50] 13894; ZNVER1-NEXT: setns (%rsi) # sched: [1:0.50] 13895; ZNVER1-NEXT: setp (%rsi) # sched: [1:0.50] 13896; ZNVER1-NEXT: setnp (%rsi) # sched: [1:0.50] 13897; ZNVER1-NEXT: setl (%rsi) # sched: [1:0.50] 13898; ZNVER1-NEXT: setge (%rsi) # sched: [1:0.50] 13899; ZNVER1-NEXT: setle (%rsi) # sched: [1:0.50] 13900; ZNVER1-NEXT: setg (%rsi) # sched: [1:0.50] 13901; ZNVER1-NEXT: #NO_APP 13902; ZNVER1-NEXT: retq # sched: [1:0.50] 13903 call void asm sideeffect "seto $0 \0A\09 setno $0 \0A\09 setb $0 \0A\09 setnb $0 \0A\09 setz $0 \0A\09 setnz $0 \0A\09 setbe $0 \0A\09 setnbe $0 \0A\09 sets $0 \0A\09 setns $0 \0A\09 setp $0 \0A\09 setnp $0 \0A\09 setl $0 \0A\09 setnl $0 \0A\09 setle $0 \0A\09 setnle $0 \0A\09 seto $1 \0A\09 setno $1 \0A\09 setb $1 \0A\09 setnb $1 \0A\09 setz $1 \0A\09 setnz $1 \0A\09 setbe $1 \0A\09 setnbe $1 \0A\09 sets $1 \0A\09 setns $1 \0A\09 setp $1 \0A\09 setnp $1 \0A\09 setl $1 \0A\09 setnl $1 \0A\09 setle $1 \0A\09 setnle $1", "r,*m"(i8 %a0, i8 *%a1) 13904 ret void 13905} 13906 13907; TODO - test_sgdt 13908 13909define void @test_shld_shrd_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 13910; GENERIC-LABEL: test_shld_shrd_16: 13911; GENERIC: # %bb.0: 13912; GENERIC-NEXT: #APP 13913; GENERIC-NEXT: shldw %cl, %si, %di # sched: [4:1.50] 13914; GENERIC-NEXT: shrdw %cl, %si, %di # sched: [4:1.50] 13915; GENERIC-NEXT: shldw %cl, %si, (%rdx) # sched: [10:1.50] 13916; GENERIC-NEXT: shrdw %cl, %si, (%rdx) # sched: [10:1.50] 13917; GENERIC-NEXT: shldw $7, %si, %di # sched: [2:0.67] 13918; GENERIC-NEXT: shrdw $7, %si, %di # sched: [2:0.67] 13919; GENERIC-NEXT: shldw $7, %si, (%rdx) # sched: [8:1.00] 13920; GENERIC-NEXT: shrdw $7, %si, (%rdx) # sched: [8:1.00] 13921; GENERIC-NEXT: #NO_APP 13922; GENERIC-NEXT: retq # sched: [1:1.00] 13923; 13924; ATOM-LABEL: test_shld_shrd_16: 13925; ATOM: # %bb.0: 13926; ATOM-NEXT: #APP 13927; ATOM-NEXT: shldw %cl, %si, %di # sched: [6:3.00] 13928; ATOM-NEXT: shrdw %cl, %si, %di # sched: [6:3.00] 13929; ATOM-NEXT: shldw %cl, %si, (%rdx) # sched: [6:3.00] 13930; ATOM-NEXT: shrdw %cl, %si, (%rdx) # sched: [6:3.00] 13931; ATOM-NEXT: shldw $7, %si, %di # sched: [6:3.00] 13932; ATOM-NEXT: shrdw $7, %si, %di # sched: [6:3.00] 13933; ATOM-NEXT: shldw $7, %si, (%rdx) # sched: [6:3.00] 13934; ATOM-NEXT: shrdw $7, %si, (%rdx) # sched: [6:3.00] 13935; ATOM-NEXT: #NO_APP 13936; ATOM-NEXT: retq # sched: [79:39.50] 13937; 13938; SLM-LABEL: test_shld_shrd_16: 13939; SLM: # %bb.0: 13940; SLM-NEXT: #APP 13941; SLM-NEXT: shldw %cl, %si, %di # sched: [1:1.00] 13942; SLM-NEXT: shrdw %cl, %si, %di # sched: [1:1.00] 13943; SLM-NEXT: shldw %cl, %si, (%rdx) # sched: [4:2.00] 13944; SLM-NEXT: shrdw %cl, %si, (%rdx) # sched: [4:2.00] 13945; SLM-NEXT: shldw $7, %si, %di # sched: [1:1.00] 13946; SLM-NEXT: shrdw $7, %si, %di # sched: [1:1.00] 13947; SLM-NEXT: shldw $7, %si, (%rdx) # sched: [4:2.00] 13948; SLM-NEXT: shrdw $7, %si, (%rdx) # sched: [4:2.00] 13949; SLM-NEXT: #NO_APP 13950; SLM-NEXT: retq # sched: [4:1.00] 13951; 13952; SANDY-LABEL: test_shld_shrd_16: 13953; SANDY: # %bb.0: 13954; SANDY-NEXT: #APP 13955; SANDY-NEXT: shldw %cl, %si, %di # sched: [4:1.50] 13956; SANDY-NEXT: shrdw %cl, %si, %di # sched: [4:1.50] 13957; SANDY-NEXT: shldw %cl, %si, (%rdx) # sched: [10:1.50] 13958; SANDY-NEXT: shrdw %cl, %si, (%rdx) # sched: [10:1.50] 13959; SANDY-NEXT: shldw $7, %si, %di # sched: [2:0.67] 13960; SANDY-NEXT: shrdw $7, %si, %di # sched: [2:0.67] 13961; SANDY-NEXT: shldw $7, %si, (%rdx) # sched: [8:1.00] 13962; SANDY-NEXT: shrdw $7, %si, (%rdx) # sched: [8:1.00] 13963; SANDY-NEXT: #NO_APP 13964; SANDY-NEXT: retq # sched: [1:1.00] 13965; 13966; HASWELL-LABEL: test_shld_shrd_16: 13967; HASWELL: # %bb.0: 13968; HASWELL-NEXT: #APP 13969; HASWELL-NEXT: shldw %cl, %si, %di # sched: [6:1.00] 13970; HASWELL-NEXT: shrdw %cl, %si, %di # sched: [6:1.00] 13971; HASWELL-NEXT: shldw %cl, %si, (%rdx) # sched: [12:1.00] 13972; HASWELL-NEXT: shrdw %cl, %si, (%rdx) # sched: [12:1.00] 13973; HASWELL-NEXT: shldw $7, %si, %di # sched: [3:1.00] 13974; HASWELL-NEXT: shrdw $7, %si, %di # sched: [3:1.00] 13975; HASWELL-NEXT: shldw $7, %si, (%rdx) # sched: [10:1.00] 13976; HASWELL-NEXT: shrdw $7, %si, (%rdx) # sched: [10:1.00] 13977; HASWELL-NEXT: #NO_APP 13978; HASWELL-NEXT: retq # sched: [7:1.00] 13979; 13980; BROADWELL-LABEL: test_shld_shrd_16: 13981; BROADWELL: # %bb.0: 13982; BROADWELL-NEXT: #APP 13983; BROADWELL-NEXT: shldw %cl, %si, %di # sched: [6:1.00] 13984; BROADWELL-NEXT: shrdw %cl, %si, %di # sched: [6:1.00] 13985; BROADWELL-NEXT: shldw %cl, %si, (%rdx) # sched: [11:1.00] 13986; BROADWELL-NEXT: shrdw %cl, %si, (%rdx) # sched: [11:1.00] 13987; BROADWELL-NEXT: shldw $7, %si, %di # sched: [3:1.00] 13988; BROADWELL-NEXT: shrdw $7, %si, %di # sched: [3:1.00] 13989; BROADWELL-NEXT: shldw $7, %si, (%rdx) # sched: [9:1.00] 13990; BROADWELL-NEXT: shrdw $7, %si, (%rdx) # sched: [9:1.00] 13991; BROADWELL-NEXT: #NO_APP 13992; BROADWELL-NEXT: retq # sched: [7:1.00] 13993; 13994; SKYLAKE-LABEL: test_shld_shrd_16: 13995; SKYLAKE: # %bb.0: 13996; SKYLAKE-NEXT: #APP 13997; SKYLAKE-NEXT: shldw %cl, %si, %di # sched: [6:1.00] 13998; SKYLAKE-NEXT: shrdw %cl, %si, %di # sched: [6:1.00] 13999; SKYLAKE-NEXT: shldw %cl, %si, (%rdx) # sched: [11:1.00] 14000; SKYLAKE-NEXT: shrdw %cl, %si, (%rdx) # sched: [11:1.00] 14001; SKYLAKE-NEXT: shldw $7, %si, %di # sched: [3:1.00] 14002; SKYLAKE-NEXT: shrdw $7, %si, %di # sched: [3:1.00] 14003; SKYLAKE-NEXT: shldw $7, %si, (%rdx) # sched: [9:1.00] 14004; SKYLAKE-NEXT: shrdw $7, %si, (%rdx) # sched: [9:1.00] 14005; SKYLAKE-NEXT: #NO_APP 14006; SKYLAKE-NEXT: retq # sched: [7:1.00] 14007; 14008; SKX-LABEL: test_shld_shrd_16: 14009; SKX: # %bb.0: 14010; SKX-NEXT: #APP 14011; SKX-NEXT: shldw %cl, %si, %di # sched: [6:1.00] 14012; SKX-NEXT: shrdw %cl, %si, %di # sched: [6:1.00] 14013; SKX-NEXT: shldw %cl, %si, (%rdx) # sched: [11:1.00] 14014; SKX-NEXT: shrdw %cl, %si, (%rdx) # sched: [11:1.00] 14015; SKX-NEXT: shldw $7, %si, %di # sched: [3:1.00] 14016; SKX-NEXT: shrdw $7, %si, %di # sched: [3:1.00] 14017; SKX-NEXT: shldw $7, %si, (%rdx) # sched: [9:1.00] 14018; SKX-NEXT: shrdw $7, %si, (%rdx) # sched: [9:1.00] 14019; SKX-NEXT: #NO_APP 14020; SKX-NEXT: retq # sched: [7:1.00] 14021; 14022; BTVER2-LABEL: test_shld_shrd_16: 14023; BTVER2: # %bb.0: 14024; BTVER2-NEXT: #APP 14025; BTVER2-NEXT: shldw %cl, %si, %di # sched: [4:4.00] 14026; BTVER2-NEXT: shrdw %cl, %si, %di # sched: [4:4.00] 14027; BTVER2-NEXT: shldw %cl, %si, (%rdx) # sched: [9:11.00] 14028; BTVER2-NEXT: shrdw %cl, %si, (%rdx) # sched: [9:11.00] 14029; BTVER2-NEXT: shldw $7, %si, %di # sched: [3:3.00] 14030; BTVER2-NEXT: shrdw $7, %si, %di # sched: [3:3.00] 14031; BTVER2-NEXT: shldw $7, %si, (%rdx) # sched: [9:11.00] 14032; BTVER2-NEXT: shrdw $7, %si, (%rdx) # sched: [9:11.00] 14033; BTVER2-NEXT: #NO_APP 14034; BTVER2-NEXT: retq # sched: [4:1.00] 14035; 14036; ZNVER1-LABEL: test_shld_shrd_16: 14037; ZNVER1: # %bb.0: 14038; ZNVER1-NEXT: #APP 14039; ZNVER1-NEXT: shldw %cl, %si, %di # sched: [100:0.25] 14040; ZNVER1-NEXT: shrdw %cl, %si, %di # sched: [100:0.25] 14041; ZNVER1-NEXT: shldw %cl, %si, (%rdx) # sched: [100:0.25] 14042; ZNVER1-NEXT: shrdw %cl, %si, (%rdx) # sched: [100:0.25] 14043; ZNVER1-NEXT: shldw $7, %si, %di # sched: [1:0.25] 14044; ZNVER1-NEXT: shrdw $7, %si, %di # sched: [1:0.25] 14045; ZNVER1-NEXT: shldw $7, %si, (%rdx) # sched: [5:0.50] 14046; ZNVER1-NEXT: shrdw $7, %si, (%rdx) # sched: [5:0.50] 14047; ZNVER1-NEXT: #NO_APP 14048; ZNVER1-NEXT: retq # sched: [1:0.50] 14049 call void asm sideeffect "shld $1, $0 \0A\09 shrd $1, $0 \0A\09 shld $1, $2 \0A\09 shrd $1, $2 \0A\09 shld $3, $1, $0 \0A\09 shrd $3, $1, $0 \0A\09 shld $3, $1, $2 \0A\09 shrd $3, $1, $2", "r,r,*m,i"(i16 %a0, i16 %a1, i16 *%a2, i8 7) 14050 ret void 14051} 14052define void @test_shld_shrd_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 14053; GENERIC-LABEL: test_shld_shrd_32: 14054; GENERIC: # %bb.0: 14055; GENERIC-NEXT: #APP 14056; GENERIC-NEXT: shldl %cl, %esi, %edi # sched: [4:1.50] 14057; GENERIC-NEXT: shrdl %cl, %esi, %edi # sched: [4:1.50] 14058; GENERIC-NEXT: shldl %cl, %esi, (%rdx) # sched: [10:1.50] 14059; GENERIC-NEXT: shrdl %cl, %esi, (%rdx) # sched: [10:1.50] 14060; GENERIC-NEXT: shldl $7, %esi, %edi # sched: [2:0.67] 14061; GENERIC-NEXT: shrdl $7, %esi, %edi # sched: [2:0.67] 14062; GENERIC-NEXT: shldl $7, %esi, (%rdx) # sched: [8:1.00] 14063; GENERIC-NEXT: shrdl $7, %esi, (%rdx) # sched: [8:1.00] 14064; GENERIC-NEXT: #NO_APP 14065; GENERIC-NEXT: retq # sched: [1:1.00] 14066; 14067; ATOM-LABEL: test_shld_shrd_32: 14068; ATOM: # %bb.0: 14069; ATOM-NEXT: #APP 14070; ATOM-NEXT: shldl %cl, %esi, %edi # sched: [2:1.00] 14071; ATOM-NEXT: shrdl %cl, %esi, %edi # sched: [2:1.00] 14072; ATOM-NEXT: shldl %cl, %esi, (%rdx) # sched: [4:2.00] 14073; ATOM-NEXT: shrdl %cl, %esi, (%rdx) # sched: [4:2.00] 14074; ATOM-NEXT: shldl $7, %esi, %edi # sched: [2:1.00] 14075; ATOM-NEXT: shrdl $7, %esi, %edi # sched: [2:1.00] 14076; ATOM-NEXT: shldl $7, %esi, (%rdx) # sched: [4:2.00] 14077; ATOM-NEXT: shrdl $7, %esi, (%rdx) # sched: [4:2.00] 14078; ATOM-NEXT: #NO_APP 14079; ATOM-NEXT: retq # sched: [79:39.50] 14080; 14081; SLM-LABEL: test_shld_shrd_32: 14082; SLM: # %bb.0: 14083; SLM-NEXT: #APP 14084; SLM-NEXT: shldl %cl, %esi, %edi # sched: [1:1.00] 14085; SLM-NEXT: shrdl %cl, %esi, %edi # sched: [1:1.00] 14086; SLM-NEXT: shldl %cl, %esi, (%rdx) # sched: [4:2.00] 14087; SLM-NEXT: shrdl %cl, %esi, (%rdx) # sched: [4:2.00] 14088; SLM-NEXT: shldl $7, %esi, %edi # sched: [1:1.00] 14089; SLM-NEXT: shrdl $7, %esi, %edi # sched: [1:1.00] 14090; SLM-NEXT: shldl $7, %esi, (%rdx) # sched: [4:2.00] 14091; SLM-NEXT: shrdl $7, %esi, (%rdx) # sched: [4:2.00] 14092; SLM-NEXT: #NO_APP 14093; SLM-NEXT: retq # sched: [4:1.00] 14094; 14095; SANDY-LABEL: test_shld_shrd_32: 14096; SANDY: # %bb.0: 14097; SANDY-NEXT: #APP 14098; SANDY-NEXT: shldl %cl, %esi, %edi # sched: [4:1.50] 14099; SANDY-NEXT: shrdl %cl, %esi, %edi # sched: [4:1.50] 14100; SANDY-NEXT: shldl %cl, %esi, (%rdx) # sched: [10:1.50] 14101; SANDY-NEXT: shrdl %cl, %esi, (%rdx) # sched: [10:1.50] 14102; SANDY-NEXT: shldl $7, %esi, %edi # sched: [2:0.67] 14103; SANDY-NEXT: shrdl $7, %esi, %edi # sched: [2:0.67] 14104; SANDY-NEXT: shldl $7, %esi, (%rdx) # sched: [8:1.00] 14105; SANDY-NEXT: shrdl $7, %esi, (%rdx) # sched: [8:1.00] 14106; SANDY-NEXT: #NO_APP 14107; SANDY-NEXT: retq # sched: [1:1.00] 14108; 14109; HASWELL-LABEL: test_shld_shrd_32: 14110; HASWELL: # %bb.0: 14111; HASWELL-NEXT: #APP 14112; HASWELL-NEXT: shldl %cl, %esi, %edi # sched: [6:1.00] 14113; HASWELL-NEXT: shrdl %cl, %esi, %edi # sched: [6:1.00] 14114; HASWELL-NEXT: shldl %cl, %esi, (%rdx) # sched: [12:1.00] 14115; HASWELL-NEXT: shrdl %cl, %esi, (%rdx) # sched: [12:1.00] 14116; HASWELL-NEXT: shldl $7, %esi, %edi # sched: [3:1.00] 14117; HASWELL-NEXT: shrdl $7, %esi, %edi # sched: [3:1.00] 14118; HASWELL-NEXT: shldl $7, %esi, (%rdx) # sched: [10:1.00] 14119; HASWELL-NEXT: shrdl $7, %esi, (%rdx) # sched: [10:1.00] 14120; HASWELL-NEXT: #NO_APP 14121; HASWELL-NEXT: retq # sched: [7:1.00] 14122; 14123; BROADWELL-LABEL: test_shld_shrd_32: 14124; BROADWELL: # %bb.0: 14125; BROADWELL-NEXT: #APP 14126; BROADWELL-NEXT: shldl %cl, %esi, %edi # sched: [6:1.00] 14127; BROADWELL-NEXT: shrdl %cl, %esi, %edi # sched: [6:1.00] 14128; BROADWELL-NEXT: shldl %cl, %esi, (%rdx) # sched: [11:1.00] 14129; BROADWELL-NEXT: shrdl %cl, %esi, (%rdx) # sched: [11:1.00] 14130; BROADWELL-NEXT: shldl $7, %esi, %edi # sched: [3:1.00] 14131; BROADWELL-NEXT: shrdl $7, %esi, %edi # sched: [3:1.00] 14132; BROADWELL-NEXT: shldl $7, %esi, (%rdx) # sched: [9:1.00] 14133; BROADWELL-NEXT: shrdl $7, %esi, (%rdx) # sched: [9:1.00] 14134; BROADWELL-NEXT: #NO_APP 14135; BROADWELL-NEXT: retq # sched: [7:1.00] 14136; 14137; SKYLAKE-LABEL: test_shld_shrd_32: 14138; SKYLAKE: # %bb.0: 14139; SKYLAKE-NEXT: #APP 14140; SKYLAKE-NEXT: shldl %cl, %esi, %edi # sched: [6:1.00] 14141; SKYLAKE-NEXT: shrdl %cl, %esi, %edi # sched: [6:1.00] 14142; SKYLAKE-NEXT: shldl %cl, %esi, (%rdx) # sched: [11:1.00] 14143; SKYLAKE-NEXT: shrdl %cl, %esi, (%rdx) # sched: [11:1.00] 14144; SKYLAKE-NEXT: shldl $7, %esi, %edi # sched: [3:1.00] 14145; SKYLAKE-NEXT: shrdl $7, %esi, %edi # sched: [3:1.00] 14146; SKYLAKE-NEXT: shldl $7, %esi, (%rdx) # sched: [9:1.00] 14147; SKYLAKE-NEXT: shrdl $7, %esi, (%rdx) # sched: [9:1.00] 14148; SKYLAKE-NEXT: #NO_APP 14149; SKYLAKE-NEXT: retq # sched: [7:1.00] 14150; 14151; SKX-LABEL: test_shld_shrd_32: 14152; SKX: # %bb.0: 14153; SKX-NEXT: #APP 14154; SKX-NEXT: shldl %cl, %esi, %edi # sched: [6:1.00] 14155; SKX-NEXT: shrdl %cl, %esi, %edi # sched: [6:1.00] 14156; SKX-NEXT: shldl %cl, %esi, (%rdx) # sched: [11:1.00] 14157; SKX-NEXT: shrdl %cl, %esi, (%rdx) # sched: [11:1.00] 14158; SKX-NEXT: shldl $7, %esi, %edi # sched: [3:1.00] 14159; SKX-NEXT: shrdl $7, %esi, %edi # sched: [3:1.00] 14160; SKX-NEXT: shldl $7, %esi, (%rdx) # sched: [9:1.00] 14161; SKX-NEXT: shrdl $7, %esi, (%rdx) # sched: [9:1.00] 14162; SKX-NEXT: #NO_APP 14163; SKX-NEXT: retq # sched: [7:1.00] 14164; 14165; BTVER2-LABEL: test_shld_shrd_32: 14166; BTVER2: # %bb.0: 14167; BTVER2-NEXT: #APP 14168; BTVER2-NEXT: shldl %cl, %esi, %edi # sched: [4:4.00] 14169; BTVER2-NEXT: shrdl %cl, %esi, %edi # sched: [4:4.00] 14170; BTVER2-NEXT: shldl %cl, %esi, (%rdx) # sched: [9:11.00] 14171; BTVER2-NEXT: shrdl %cl, %esi, (%rdx) # sched: [9:11.00] 14172; BTVER2-NEXT: shldl $7, %esi, %edi # sched: [3:3.00] 14173; BTVER2-NEXT: shrdl $7, %esi, %edi # sched: [3:3.00] 14174; BTVER2-NEXT: shldl $7, %esi, (%rdx) # sched: [9:11.00] 14175; BTVER2-NEXT: shrdl $7, %esi, (%rdx) # sched: [9:11.00] 14176; BTVER2-NEXT: #NO_APP 14177; BTVER2-NEXT: retq # sched: [4:1.00] 14178; 14179; ZNVER1-LABEL: test_shld_shrd_32: 14180; ZNVER1: # %bb.0: 14181; ZNVER1-NEXT: #APP 14182; ZNVER1-NEXT: shldl %cl, %esi, %edi # sched: [100:0.25] 14183; ZNVER1-NEXT: shrdl %cl, %esi, %edi # sched: [100:0.25] 14184; ZNVER1-NEXT: shldl %cl, %esi, (%rdx) # sched: [100:0.25] 14185; ZNVER1-NEXT: shrdl %cl, %esi, (%rdx) # sched: [100:0.25] 14186; ZNVER1-NEXT: shldl $7, %esi, %edi # sched: [1:0.25] 14187; ZNVER1-NEXT: shrdl $7, %esi, %edi # sched: [1:0.25] 14188; ZNVER1-NEXT: shldl $7, %esi, (%rdx) # sched: [5:0.50] 14189; ZNVER1-NEXT: shrdl $7, %esi, (%rdx) # sched: [5:0.50] 14190; ZNVER1-NEXT: #NO_APP 14191; ZNVER1-NEXT: retq # sched: [1:0.50] 14192 call void asm sideeffect "shld $1, $0 \0A\09 shrd $1, $0 \0A\09 shld $1, $2 \0A\09 shrd $1, $2 \0A\09 shld $3, $1, $0 \0A\09 shrd $3, $1, $0 \0A\09 shld $3, $1, $2 \0A\09 shrd $3, $1, $2", "r,r,*m,i"(i32 %a0, i32 %a1, i32 *%a2, i8 7) 14193 ret void 14194} 14195define void @test_shld_shrd_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 14196; GENERIC-LABEL: test_shld_shrd_64: 14197; GENERIC: # %bb.0: 14198; GENERIC-NEXT: #APP 14199; GENERIC-NEXT: shldq %cl, %rsi, %rdi # sched: [4:1.50] 14200; GENERIC-NEXT: shrdq %cl, %rsi, %rdi # sched: [4:1.50] 14201; GENERIC-NEXT: shldq %cl, %rsi, (%rdx) # sched: [10:1.50] 14202; GENERIC-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [10:1.50] 14203; GENERIC-NEXT: shldq $7, %rsi, %rdi # sched: [2:0.67] 14204; GENERIC-NEXT: shrdq $7, %rsi, %rdi # sched: [2:0.67] 14205; GENERIC-NEXT: shldq $7, %rsi, (%rdx) # sched: [8:1.00] 14206; GENERIC-NEXT: shrdq $7, %rsi, (%rdx) # sched: [8:1.00] 14207; GENERIC-NEXT: #NO_APP 14208; GENERIC-NEXT: retq # sched: [1:1.00] 14209; 14210; ATOM-LABEL: test_shld_shrd_64: 14211; ATOM: # %bb.0: 14212; ATOM-NEXT: #APP 14213; ATOM-NEXT: shldq %cl, %rsi, %rdi # sched: [8:4.00] 14214; ATOM-NEXT: shrdq %cl, %rsi, %rdi # sched: [8:4.00] 14215; ATOM-NEXT: shldq %cl, %rsi, (%rdx) # sched: [9:4.50] 14216; ATOM-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [9:4.50] 14217; ATOM-NEXT: shldq $7, %rsi, %rdi # sched: [9:4.50] 14218; ATOM-NEXT: shrdq $7, %rsi, %rdi # sched: [9:4.50] 14219; ATOM-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:4.50] 14220; ATOM-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:4.50] 14221; ATOM-NEXT: #NO_APP 14222; ATOM-NEXT: retq # sched: [79:39.50] 14223; 14224; SLM-LABEL: test_shld_shrd_64: 14225; SLM: # %bb.0: 14226; SLM-NEXT: #APP 14227; SLM-NEXT: shldq %cl, %rsi, %rdi # sched: [1:1.00] 14228; SLM-NEXT: shrdq %cl, %rsi, %rdi # sched: [1:1.00] 14229; SLM-NEXT: shldq %cl, %rsi, (%rdx) # sched: [4:2.00] 14230; SLM-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [4:2.00] 14231; SLM-NEXT: shldq $7, %rsi, %rdi # sched: [1:1.00] 14232; SLM-NEXT: shrdq $7, %rsi, %rdi # sched: [1:1.00] 14233; SLM-NEXT: shldq $7, %rsi, (%rdx) # sched: [4:2.00] 14234; SLM-NEXT: shrdq $7, %rsi, (%rdx) # sched: [4:2.00] 14235; SLM-NEXT: #NO_APP 14236; SLM-NEXT: retq # sched: [4:1.00] 14237; 14238; SANDY-LABEL: test_shld_shrd_64: 14239; SANDY: # %bb.0: 14240; SANDY-NEXT: #APP 14241; SANDY-NEXT: shldq %cl, %rsi, %rdi # sched: [4:1.50] 14242; SANDY-NEXT: shrdq %cl, %rsi, %rdi # sched: [4:1.50] 14243; SANDY-NEXT: shldq %cl, %rsi, (%rdx) # sched: [10:1.50] 14244; SANDY-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [10:1.50] 14245; SANDY-NEXT: shldq $7, %rsi, %rdi # sched: [2:0.67] 14246; SANDY-NEXT: shrdq $7, %rsi, %rdi # sched: [2:0.67] 14247; SANDY-NEXT: shldq $7, %rsi, (%rdx) # sched: [8:1.00] 14248; SANDY-NEXT: shrdq $7, %rsi, (%rdx) # sched: [8:1.00] 14249; SANDY-NEXT: #NO_APP 14250; SANDY-NEXT: retq # sched: [1:1.00] 14251; 14252; HASWELL-LABEL: test_shld_shrd_64: 14253; HASWELL: # %bb.0: 14254; HASWELL-NEXT: #APP 14255; HASWELL-NEXT: shldq %cl, %rsi, %rdi # sched: [6:1.00] 14256; HASWELL-NEXT: shrdq %cl, %rsi, %rdi # sched: [6:1.00] 14257; HASWELL-NEXT: shldq %cl, %rsi, (%rdx) # sched: [12:1.00] 14258; HASWELL-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [12:1.00] 14259; HASWELL-NEXT: shldq $7, %rsi, %rdi # sched: [3:1.00] 14260; HASWELL-NEXT: shrdq $7, %rsi, %rdi # sched: [3:1.00] 14261; HASWELL-NEXT: shldq $7, %rsi, (%rdx) # sched: [10:1.00] 14262; HASWELL-NEXT: shrdq $7, %rsi, (%rdx) # sched: [10:1.00] 14263; HASWELL-NEXT: #NO_APP 14264; HASWELL-NEXT: retq # sched: [7:1.00] 14265; 14266; BROADWELL-LABEL: test_shld_shrd_64: 14267; BROADWELL: # %bb.0: 14268; BROADWELL-NEXT: #APP 14269; BROADWELL-NEXT: shldq %cl, %rsi, %rdi # sched: [6:1.00] 14270; BROADWELL-NEXT: shrdq %cl, %rsi, %rdi # sched: [6:1.00] 14271; BROADWELL-NEXT: shldq %cl, %rsi, (%rdx) # sched: [11:1.00] 14272; BROADWELL-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [11:1.00] 14273; BROADWELL-NEXT: shldq $7, %rsi, %rdi # sched: [3:1.00] 14274; BROADWELL-NEXT: shrdq $7, %rsi, %rdi # sched: [3:1.00] 14275; BROADWELL-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:1.00] 14276; BROADWELL-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:1.00] 14277; BROADWELL-NEXT: #NO_APP 14278; BROADWELL-NEXT: retq # sched: [7:1.00] 14279; 14280; SKYLAKE-LABEL: test_shld_shrd_64: 14281; SKYLAKE: # %bb.0: 14282; SKYLAKE-NEXT: #APP 14283; SKYLAKE-NEXT: shldq %cl, %rsi, %rdi # sched: [6:1.00] 14284; SKYLAKE-NEXT: shrdq %cl, %rsi, %rdi # sched: [6:1.00] 14285; SKYLAKE-NEXT: shldq %cl, %rsi, (%rdx) # sched: [11:1.00] 14286; SKYLAKE-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [11:1.00] 14287; SKYLAKE-NEXT: shldq $7, %rsi, %rdi # sched: [3:1.00] 14288; SKYLAKE-NEXT: shrdq $7, %rsi, %rdi # sched: [3:1.00] 14289; SKYLAKE-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:1.00] 14290; SKYLAKE-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:1.00] 14291; SKYLAKE-NEXT: #NO_APP 14292; SKYLAKE-NEXT: retq # sched: [7:1.00] 14293; 14294; SKX-LABEL: test_shld_shrd_64: 14295; SKX: # %bb.0: 14296; SKX-NEXT: #APP 14297; SKX-NEXT: shldq %cl, %rsi, %rdi # sched: [6:1.00] 14298; SKX-NEXT: shrdq %cl, %rsi, %rdi # sched: [6:1.00] 14299; SKX-NEXT: shldq %cl, %rsi, (%rdx) # sched: [11:1.00] 14300; SKX-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [11:1.00] 14301; SKX-NEXT: shldq $7, %rsi, %rdi # sched: [3:1.00] 14302; SKX-NEXT: shrdq $7, %rsi, %rdi # sched: [3:1.00] 14303; SKX-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:1.00] 14304; SKX-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:1.00] 14305; SKX-NEXT: #NO_APP 14306; SKX-NEXT: retq # sched: [7:1.00] 14307; 14308; BTVER2-LABEL: test_shld_shrd_64: 14309; BTVER2: # %bb.0: 14310; BTVER2-NEXT: #APP 14311; BTVER2-NEXT: shldq %cl, %rsi, %rdi # sched: [4:4.00] 14312; BTVER2-NEXT: shrdq %cl, %rsi, %rdi # sched: [4:4.00] 14313; BTVER2-NEXT: shldq %cl, %rsi, (%rdx) # sched: [9:11.00] 14314; BTVER2-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [9:11.00] 14315; BTVER2-NEXT: shldq $7, %rsi, %rdi # sched: [3:3.00] 14316; BTVER2-NEXT: shrdq $7, %rsi, %rdi # sched: [3:3.00] 14317; BTVER2-NEXT: shldq $7, %rsi, (%rdx) # sched: [9:11.00] 14318; BTVER2-NEXT: shrdq $7, %rsi, (%rdx) # sched: [9:11.00] 14319; BTVER2-NEXT: #NO_APP 14320; BTVER2-NEXT: retq # sched: [4:1.00] 14321; 14322; ZNVER1-LABEL: test_shld_shrd_64: 14323; ZNVER1: # %bb.0: 14324; ZNVER1-NEXT: #APP 14325; ZNVER1-NEXT: shldq %cl, %rsi, %rdi # sched: [100:0.25] 14326; ZNVER1-NEXT: shrdq %cl, %rsi, %rdi # sched: [100:0.25] 14327; ZNVER1-NEXT: shldq %cl, %rsi, (%rdx) # sched: [100:0.25] 14328; ZNVER1-NEXT: shrdq %cl, %rsi, (%rdx) # sched: [100:0.25] 14329; ZNVER1-NEXT: shldq $7, %rsi, %rdi # sched: [1:0.25] 14330; ZNVER1-NEXT: shrdq $7, %rsi, %rdi # sched: [1:0.25] 14331; ZNVER1-NEXT: shldq $7, %rsi, (%rdx) # sched: [5:0.50] 14332; ZNVER1-NEXT: shrdq $7, %rsi, (%rdx) # sched: [5:0.50] 14333; ZNVER1-NEXT: #NO_APP 14334; ZNVER1-NEXT: retq # sched: [1:0.50] 14335 call void asm sideeffect "shld $1, $0 \0A\09 shrd $1, $0 \0A\09 shld $1, $2 \0A\09 shrd $1, $2 \0A\09 shld $3, $1, $0 \0A\09 shrd $3, $1, $0 \0A\09 shld $3, $1, $2 \0A\09 shrd $3, $1, $2", "r,r,*m,i"(i64 %a0, i64 %a1, i64 *%a2, i8 7) 14336 ret void 14337} 14338 14339; TODO - test_sidt 14340; TODO - test_sldt 14341; TODO - test_smsw 14342 14343define void @test_stc_std() optsize { 14344; GENERIC-LABEL: test_stc_std: 14345; GENERIC: # %bb.0: 14346; GENERIC-NEXT: #APP 14347; GENERIC-NEXT: stc # sched: [1:0.33] 14348; GENERIC-NEXT: std # sched: [1:0.33] 14349; GENERIC-NEXT: #NO_APP 14350; GENERIC-NEXT: retq # sched: [1:1.00] 14351; 14352; ATOM-LABEL: test_stc_std: 14353; ATOM: # %bb.0: 14354; ATOM-NEXT: #APP 14355; ATOM-NEXT: stc # sched: [1:0.50] 14356; ATOM-NEXT: std # sched: [21:10.50] 14357; ATOM-NEXT: #NO_APP 14358; ATOM-NEXT: retq # sched: [79:39.50] 14359; 14360; SLM-LABEL: test_stc_std: 14361; SLM: # %bb.0: 14362; SLM-NEXT: #APP 14363; SLM-NEXT: stc # sched: [1:0.50] 14364; SLM-NEXT: std # sched: [1:0.50] 14365; SLM-NEXT: #NO_APP 14366; SLM-NEXT: retq # sched: [4:1.00] 14367; 14368; SANDY-LABEL: test_stc_std: 14369; SANDY: # %bb.0: 14370; SANDY-NEXT: #APP 14371; SANDY-NEXT: stc # sched: [1:0.33] 14372; SANDY-NEXT: std # sched: [1:0.33] 14373; SANDY-NEXT: #NO_APP 14374; SANDY-NEXT: retq # sched: [1:1.00] 14375; 14376; HASWELL-LABEL: test_stc_std: 14377; HASWELL: # %bb.0: 14378; HASWELL-NEXT: #APP 14379; HASWELL-NEXT: stc # sched: [1:0.25] 14380; HASWELL-NEXT: std # sched: [6:1.50] 14381; HASWELL-NEXT: #NO_APP 14382; HASWELL-NEXT: retq # sched: [7:1.00] 14383; 14384; BROADWELL-LABEL: test_stc_std: 14385; BROADWELL: # %bb.0: 14386; BROADWELL-NEXT: #APP 14387; BROADWELL-NEXT: stc # sched: [1:0.25] 14388; BROADWELL-NEXT: std # sched: [6:1.50] 14389; BROADWELL-NEXT: #NO_APP 14390; BROADWELL-NEXT: retq # sched: [7:1.00] 14391; 14392; SKYLAKE-LABEL: test_stc_std: 14393; SKYLAKE: # %bb.0: 14394; SKYLAKE-NEXT: #APP 14395; SKYLAKE-NEXT: stc # sched: [1:0.25] 14396; SKYLAKE-NEXT: std # sched: [6:1.50] 14397; SKYLAKE-NEXT: #NO_APP 14398; SKYLAKE-NEXT: retq # sched: [7:1.00] 14399; 14400; SKX-LABEL: test_stc_std: 14401; SKX: # %bb.0: 14402; SKX-NEXT: #APP 14403; SKX-NEXT: stc # sched: [1:0.25] 14404; SKX-NEXT: std # sched: [6:1.50] 14405; SKX-NEXT: #NO_APP 14406; SKX-NEXT: retq # sched: [7:1.00] 14407; 14408; BTVER2-LABEL: test_stc_std: 14409; BTVER2: # %bb.0: 14410; BTVER2-NEXT: #APP 14411; BTVER2-NEXT: stc # sched: [1:0.50] 14412; BTVER2-NEXT: std # sched: [1:0.50] 14413; BTVER2-NEXT: #NO_APP 14414; BTVER2-NEXT: retq # sched: [4:1.00] 14415; 14416; ZNVER1-LABEL: test_stc_std: 14417; ZNVER1: # %bb.0: 14418; ZNVER1-NEXT: #APP 14419; ZNVER1-NEXT: stc # sched: [1:0.25] 14420; ZNVER1-NEXT: std # sched: [1:0.25] 14421; ZNVER1-NEXT: #NO_APP 14422; ZNVER1-NEXT: retq # sched: [1:0.50] 14423 call void asm sideeffect "stc \0A\09 std", ""() 14424 ret void 14425} 14426 14427; TODO - test_sti 14428; TODO - test_stgi 14429 14430define void @test_stos() optsize { 14431; GENERIC-LABEL: test_stos: 14432; GENERIC: # %bb.0: 14433; GENERIC-NEXT: #APP 14434; GENERIC-NEXT: stosb %al, %es:(%rdi) # sched: [5:1.00] 14435; GENERIC-NEXT: stosw %ax, %es:(%rdi) # sched: [5:1.00] 14436; GENERIC-NEXT: stosl %eax, %es:(%rdi) # sched: [5:1.00] 14437; GENERIC-NEXT: stosq %rax, %es:(%rdi) # sched: [5:1.00] 14438; GENERIC-NEXT: #NO_APP 14439; GENERIC-NEXT: retq # sched: [1:1.00] 14440; 14441; ATOM-LABEL: test_stos: 14442; ATOM: # %bb.0: 14443; ATOM-NEXT: #APP 14444; ATOM-NEXT: stosb %al, %es:(%rdi) # sched: [1:0.50] 14445; ATOM-NEXT: stosw %ax, %es:(%rdi) # sched: [1:0.50] 14446; ATOM-NEXT: stosl %eax, %es:(%rdi) # sched: [1:0.50] 14447; ATOM-NEXT: stosq %rax, %es:(%rdi) # sched: [1:0.50] 14448; ATOM-NEXT: #NO_APP 14449; ATOM-NEXT: retq # sched: [79:39.50] 14450; 14451; SLM-LABEL: test_stos: 14452; SLM: # %bb.0: 14453; SLM-NEXT: #APP 14454; SLM-NEXT: stosb %al, %es:(%rdi) # sched: [100:1.00] 14455; SLM-NEXT: stosw %ax, %es:(%rdi) # sched: [100:1.00] 14456; SLM-NEXT: stosl %eax, %es:(%rdi) # sched: [100:1.00] 14457; SLM-NEXT: stosq %rax, %es:(%rdi) # sched: [100:1.00] 14458; SLM-NEXT: #NO_APP 14459; SLM-NEXT: retq # sched: [4:1.00] 14460; 14461; SANDY-LABEL: test_stos: 14462; SANDY: # %bb.0: 14463; SANDY-NEXT: #APP 14464; SANDY-NEXT: stosb %al, %es:(%rdi) # sched: [5:1.00] 14465; SANDY-NEXT: stosw %ax, %es:(%rdi) # sched: [5:1.00] 14466; SANDY-NEXT: stosl %eax, %es:(%rdi) # sched: [5:1.00] 14467; SANDY-NEXT: stosq %rax, %es:(%rdi) # sched: [5:1.00] 14468; SANDY-NEXT: #NO_APP 14469; SANDY-NEXT: retq # sched: [1:1.00] 14470; 14471; HASWELL-LABEL: test_stos: 14472; HASWELL: # %bb.0: 14473; HASWELL-NEXT: #APP 14474; HASWELL-NEXT: stosb %al, %es:(%rdi) # sched: [2:1.00] 14475; HASWELL-NEXT: stosw %ax, %es:(%rdi) # sched: [2:1.00] 14476; HASWELL-NEXT: stosl %eax, %es:(%rdi) # sched: [2:1.00] 14477; HASWELL-NEXT: stosq %rax, %es:(%rdi) # sched: [2:1.00] 14478; HASWELL-NEXT: #NO_APP 14479; HASWELL-NEXT: retq # sched: [7:1.00] 14480; 14481; BROADWELL-LABEL: test_stos: 14482; BROADWELL: # %bb.0: 14483; BROADWELL-NEXT: #APP 14484; BROADWELL-NEXT: stosb %al, %es:(%rdi) # sched: [2:1.00] 14485; BROADWELL-NEXT: stosw %ax, %es:(%rdi) # sched: [2:1.00] 14486; BROADWELL-NEXT: stosl %eax, %es:(%rdi) # sched: [2:1.00] 14487; BROADWELL-NEXT: stosq %rax, %es:(%rdi) # sched: [2:1.00] 14488; BROADWELL-NEXT: #NO_APP 14489; BROADWELL-NEXT: retq # sched: [7:1.00] 14490; 14491; SKYLAKE-LABEL: test_stos: 14492; SKYLAKE: # %bb.0: 14493; SKYLAKE-NEXT: #APP 14494; SKYLAKE-NEXT: stosb %al, %es:(%rdi) # sched: [2:1.00] 14495; SKYLAKE-NEXT: stosw %ax, %es:(%rdi) # sched: [2:1.00] 14496; SKYLAKE-NEXT: stosl %eax, %es:(%rdi) # sched: [2:1.00] 14497; SKYLAKE-NEXT: stosq %rax, %es:(%rdi) # sched: [2:1.00] 14498; SKYLAKE-NEXT: #NO_APP 14499; SKYLAKE-NEXT: retq # sched: [7:1.00] 14500; 14501; SKX-LABEL: test_stos: 14502; SKX: # %bb.0: 14503; SKX-NEXT: #APP 14504; SKX-NEXT: stosb %al, %es:(%rdi) # sched: [2:1.00] 14505; SKX-NEXT: stosw %ax, %es:(%rdi) # sched: [2:1.00] 14506; SKX-NEXT: stosl %eax, %es:(%rdi) # sched: [2:1.00] 14507; SKX-NEXT: stosq %rax, %es:(%rdi) # sched: [2:1.00] 14508; SKX-NEXT: #NO_APP 14509; SKX-NEXT: retq # sched: [7:1.00] 14510; 14511; BTVER2-LABEL: test_stos: 14512; BTVER2: # %bb.0: 14513; BTVER2-NEXT: #APP 14514; BTVER2-NEXT: stosb %al, %es:(%rdi) # sched: [100:0.50] 14515; BTVER2-NEXT: stosw %ax, %es:(%rdi) # sched: [100:0.50] 14516; BTVER2-NEXT: stosl %eax, %es:(%rdi) # sched: [100:0.50] 14517; BTVER2-NEXT: stosq %rax, %es:(%rdi) # sched: [100:0.50] 14518; BTVER2-NEXT: #NO_APP 14519; BTVER2-NEXT: retq # sched: [4:1.00] 14520; 14521; ZNVER1-LABEL: test_stos: 14522; ZNVER1: # %bb.0: 14523; ZNVER1-NEXT: #APP 14524; ZNVER1-NEXT: stosb %al, %es:(%rdi) # sched: [100:0.25] 14525; ZNVER1-NEXT: stosw %ax, %es:(%rdi) # sched: [100:0.25] 14526; ZNVER1-NEXT: stosl %eax, %es:(%rdi) # sched: [100:0.25] 14527; ZNVER1-NEXT: stosq %rax, %es:(%rdi) # sched: [100:0.25] 14528; ZNVER1-NEXT: #NO_APP 14529; ZNVER1-NEXT: retq # sched: [1:0.50] 14530 call void asm sideeffect "stosb \0A\09 stosw \0A\09 stosl \0A\09 stosq", ""() 14531 ret void 14532} 14533 14534; TODO - test_str 14535 14536define void @test_sub_8(i8 %a0, i8* %a1, i8 %a2) optsize { 14537; GENERIC-LABEL: test_sub_8: 14538; GENERIC: # %bb.0: 14539; GENERIC-NEXT: #APP 14540; GENERIC-NEXT: subb $7, %al # sched: [1:0.33] 14541; GENERIC-NEXT: subb $7, %dil # sched: [1:0.33] 14542; GENERIC-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14543; GENERIC-NEXT: subb %dl, %dil # sched: [1:0.33] 14544; GENERIC-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14545; GENERIC-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14546; GENERIC-NEXT: #NO_APP 14547; GENERIC-NEXT: retq # sched: [1:1.00] 14548; 14549; ATOM-LABEL: test_sub_8: 14550; ATOM: # %bb.0: 14551; ATOM-NEXT: #APP 14552; ATOM-NEXT: subb $7, %al # sched: [1:0.50] 14553; ATOM-NEXT: subb $7, %dil # sched: [1:0.50] 14554; ATOM-NEXT: subb $7, (%rsi) # sched: [1:1.00] 14555; ATOM-NEXT: subb %dl, %dil # sched: [1:0.50] 14556; ATOM-NEXT: subb %dil, (%rsi) # sched: [1:1.00] 14557; ATOM-NEXT: subb (%rsi), %dil # sched: [1:1.00] 14558; ATOM-NEXT: #NO_APP 14559; ATOM-NEXT: retq # sched: [79:39.50] 14560; 14561; SLM-LABEL: test_sub_8: 14562; SLM: # %bb.0: 14563; SLM-NEXT: #APP 14564; SLM-NEXT: subb $7, %al # sched: [1:0.50] 14565; SLM-NEXT: subb $7, %dil # sched: [1:0.50] 14566; SLM-NEXT: subb $7, (%rsi) # sched: [5:2.00] 14567; SLM-NEXT: subb %dl, %dil # sched: [1:0.50] 14568; SLM-NEXT: subb %dil, (%rsi) # sched: [5:2.00] 14569; SLM-NEXT: subb (%rsi), %dil # sched: [4:1.00] 14570; SLM-NEXT: #NO_APP 14571; SLM-NEXT: retq # sched: [4:1.00] 14572; 14573; SANDY-LABEL: test_sub_8: 14574; SANDY: # %bb.0: 14575; SANDY-NEXT: #APP 14576; SANDY-NEXT: subb $7, %al # sched: [1:0.33] 14577; SANDY-NEXT: subb $7, %dil # sched: [1:0.33] 14578; SANDY-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14579; SANDY-NEXT: subb %dl, %dil # sched: [1:0.33] 14580; SANDY-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14581; SANDY-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14582; SANDY-NEXT: #NO_APP 14583; SANDY-NEXT: retq # sched: [1:1.00] 14584; 14585; HASWELL-LABEL: test_sub_8: 14586; HASWELL: # %bb.0: 14587; HASWELL-NEXT: #APP 14588; HASWELL-NEXT: subb $7, %al # sched: [1:0.25] 14589; HASWELL-NEXT: subb $7, %dil # sched: [1:0.25] 14590; HASWELL-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14591; HASWELL-NEXT: subb %dl, %dil # sched: [1:0.25] 14592; HASWELL-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14593; HASWELL-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14594; HASWELL-NEXT: #NO_APP 14595; HASWELL-NEXT: retq # sched: [7:1.00] 14596; 14597; BROADWELL-LABEL: test_sub_8: 14598; BROADWELL: # %bb.0: 14599; BROADWELL-NEXT: #APP 14600; BROADWELL-NEXT: subb $7, %al # sched: [1:0.25] 14601; BROADWELL-NEXT: subb $7, %dil # sched: [1:0.25] 14602; BROADWELL-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14603; BROADWELL-NEXT: subb %dl, %dil # sched: [1:0.25] 14604; BROADWELL-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14605; BROADWELL-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14606; BROADWELL-NEXT: #NO_APP 14607; BROADWELL-NEXT: retq # sched: [7:1.00] 14608; 14609; SKYLAKE-LABEL: test_sub_8: 14610; SKYLAKE: # %bb.0: 14611; SKYLAKE-NEXT: #APP 14612; SKYLAKE-NEXT: subb $7, %al # sched: [1:0.25] 14613; SKYLAKE-NEXT: subb $7, %dil # sched: [1:0.25] 14614; SKYLAKE-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14615; SKYLAKE-NEXT: subb %dl, %dil # sched: [1:0.25] 14616; SKYLAKE-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14617; SKYLAKE-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14618; SKYLAKE-NEXT: #NO_APP 14619; SKYLAKE-NEXT: retq # sched: [7:1.00] 14620; 14621; SKX-LABEL: test_sub_8: 14622; SKX: # %bb.0: 14623; SKX-NEXT: #APP 14624; SKX-NEXT: subb $7, %al # sched: [1:0.25] 14625; SKX-NEXT: subb $7, %dil # sched: [1:0.25] 14626; SKX-NEXT: subb $7, (%rsi) # sched: [7:1.00] 14627; SKX-NEXT: subb %dl, %dil # sched: [1:0.25] 14628; SKX-NEXT: subb %dil, (%rsi) # sched: [7:1.00] 14629; SKX-NEXT: subb (%rsi), %dil # sched: [6:0.50] 14630; SKX-NEXT: #NO_APP 14631; SKX-NEXT: retq # sched: [7:1.00] 14632; 14633; BTVER2-LABEL: test_sub_8: 14634; BTVER2: # %bb.0: 14635; BTVER2-NEXT: #APP 14636; BTVER2-NEXT: subb $7, %al # sched: [1:0.50] 14637; BTVER2-NEXT: subb $7, %dil # sched: [1:0.50] 14638; BTVER2-NEXT: subb $7, (%rsi) # sched: [5:1.00] 14639; BTVER2-NEXT: subb %dl, %dil # sched: [1:0.50] 14640; BTVER2-NEXT: subb %dil, (%rsi) # sched: [5:1.00] 14641; BTVER2-NEXT: subb (%rsi), %dil # sched: [4:1.00] 14642; BTVER2-NEXT: #NO_APP 14643; BTVER2-NEXT: retq # sched: [4:1.00] 14644; 14645; ZNVER1-LABEL: test_sub_8: 14646; ZNVER1: # %bb.0: 14647; ZNVER1-NEXT: #APP 14648; ZNVER1-NEXT: subb $7, %al # sched: [1:0.25] 14649; ZNVER1-NEXT: subb $7, %dil # sched: [1:0.25] 14650; ZNVER1-NEXT: subb $7, (%rsi) # sched: [5:0.50] 14651; ZNVER1-NEXT: subb %dl, %dil # sched: [1:0.25] 14652; ZNVER1-NEXT: subb %dil, (%rsi) # sched: [5:0.50] 14653; ZNVER1-NEXT: subb (%rsi), %dil # sched: [5:0.50] 14654; ZNVER1-NEXT: #NO_APP 14655; ZNVER1-NEXT: retq # sched: [1:0.50] 14656 tail call void asm "subb $3, %AL \0A\09 subb $3, $0 \0A\09 subb $3, $2 \0A\09 subb $1, $0 \0A\09 subb $0, $2 \0A\09 subb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 14657 ret void 14658} 14659define void @test_sub_16(i16 %a0, i16* %a1, i16 %a2) optsize { 14660; GENERIC-LABEL: test_sub_16: 14661; GENERIC: # %bb.0: 14662; GENERIC-NEXT: #APP 14663; GENERIC-NEXT: subw $511, %ax # imm = 0x1FF 14664; GENERIC-NEXT: # sched: [1:0.33] 14665; GENERIC-NEXT: subw $511, %di # imm = 0x1FF 14666; GENERIC-NEXT: # sched: [1:0.33] 14667; GENERIC-NEXT: subw $511, (%rsi) # imm = 0x1FF 14668; GENERIC-NEXT: # sched: [7:1.00] 14669; GENERIC-NEXT: subw $7, %di # sched: [1:0.33] 14670; GENERIC-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14671; GENERIC-NEXT: subw %dx, %di # sched: [1:0.33] 14672; GENERIC-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14673; GENERIC-NEXT: subw (%rsi), %di # sched: [6:0.50] 14674; GENERIC-NEXT: #NO_APP 14675; GENERIC-NEXT: retq # sched: [1:1.00] 14676; 14677; ATOM-LABEL: test_sub_16: 14678; ATOM: # %bb.0: 14679; ATOM-NEXT: #APP 14680; ATOM-NEXT: subw $511, %ax # imm = 0x1FF 14681; ATOM-NEXT: # sched: [1:0.50] 14682; ATOM-NEXT: subw $511, %di # imm = 0x1FF 14683; ATOM-NEXT: # sched: [1:0.50] 14684; ATOM-NEXT: subw $511, (%rsi) # imm = 0x1FF 14685; ATOM-NEXT: # sched: [1:1.00] 14686; ATOM-NEXT: subw $7, %di # sched: [1:0.50] 14687; ATOM-NEXT: subw $7, (%rsi) # sched: [1:1.00] 14688; ATOM-NEXT: subw %dx, %di # sched: [1:0.50] 14689; ATOM-NEXT: subw %di, (%rsi) # sched: [1:1.00] 14690; ATOM-NEXT: subw (%rsi), %di # sched: [1:1.00] 14691; ATOM-NEXT: #NO_APP 14692; ATOM-NEXT: retq # sched: [79:39.50] 14693; 14694; SLM-LABEL: test_sub_16: 14695; SLM: # %bb.0: 14696; SLM-NEXT: #APP 14697; SLM-NEXT: subw $511, %ax # imm = 0x1FF 14698; SLM-NEXT: # sched: [1:0.50] 14699; SLM-NEXT: subw $511, %di # imm = 0x1FF 14700; SLM-NEXT: # sched: [1:0.50] 14701; SLM-NEXT: subw $511, (%rsi) # imm = 0x1FF 14702; SLM-NEXT: # sched: [5:2.00] 14703; SLM-NEXT: subw $7, %di # sched: [1:0.50] 14704; SLM-NEXT: subw $7, (%rsi) # sched: [5:2.00] 14705; SLM-NEXT: subw %dx, %di # sched: [1:0.50] 14706; SLM-NEXT: subw %di, (%rsi) # sched: [5:2.00] 14707; SLM-NEXT: subw (%rsi), %di # sched: [4:1.00] 14708; SLM-NEXT: #NO_APP 14709; SLM-NEXT: retq # sched: [4:1.00] 14710; 14711; SANDY-LABEL: test_sub_16: 14712; SANDY: # %bb.0: 14713; SANDY-NEXT: #APP 14714; SANDY-NEXT: subw $511, %ax # imm = 0x1FF 14715; SANDY-NEXT: # sched: [1:0.33] 14716; SANDY-NEXT: subw $511, %di # imm = 0x1FF 14717; SANDY-NEXT: # sched: [1:0.33] 14718; SANDY-NEXT: subw $511, (%rsi) # imm = 0x1FF 14719; SANDY-NEXT: # sched: [7:1.00] 14720; SANDY-NEXT: subw $7, %di # sched: [1:0.33] 14721; SANDY-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14722; SANDY-NEXT: subw %dx, %di # sched: [1:0.33] 14723; SANDY-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14724; SANDY-NEXT: subw (%rsi), %di # sched: [6:0.50] 14725; SANDY-NEXT: #NO_APP 14726; SANDY-NEXT: retq # sched: [1:1.00] 14727; 14728; HASWELL-LABEL: test_sub_16: 14729; HASWELL: # %bb.0: 14730; HASWELL-NEXT: #APP 14731; HASWELL-NEXT: subw $511, %ax # imm = 0x1FF 14732; HASWELL-NEXT: # sched: [1:0.25] 14733; HASWELL-NEXT: subw $511, %di # imm = 0x1FF 14734; HASWELL-NEXT: # sched: [1:0.25] 14735; HASWELL-NEXT: subw $511, (%rsi) # imm = 0x1FF 14736; HASWELL-NEXT: # sched: [7:1.00] 14737; HASWELL-NEXT: subw $7, %di # sched: [1:0.25] 14738; HASWELL-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14739; HASWELL-NEXT: subw %dx, %di # sched: [1:0.25] 14740; HASWELL-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14741; HASWELL-NEXT: subw (%rsi), %di # sched: [6:0.50] 14742; HASWELL-NEXT: #NO_APP 14743; HASWELL-NEXT: retq # sched: [7:1.00] 14744; 14745; BROADWELL-LABEL: test_sub_16: 14746; BROADWELL: # %bb.0: 14747; BROADWELL-NEXT: #APP 14748; BROADWELL-NEXT: subw $511, %ax # imm = 0x1FF 14749; BROADWELL-NEXT: # sched: [1:0.25] 14750; BROADWELL-NEXT: subw $511, %di # imm = 0x1FF 14751; BROADWELL-NEXT: # sched: [1:0.25] 14752; BROADWELL-NEXT: subw $511, (%rsi) # imm = 0x1FF 14753; BROADWELL-NEXT: # sched: [7:1.00] 14754; BROADWELL-NEXT: subw $7, %di # sched: [1:0.25] 14755; BROADWELL-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14756; BROADWELL-NEXT: subw %dx, %di # sched: [1:0.25] 14757; BROADWELL-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14758; BROADWELL-NEXT: subw (%rsi), %di # sched: [6:0.50] 14759; BROADWELL-NEXT: #NO_APP 14760; BROADWELL-NEXT: retq # sched: [7:1.00] 14761; 14762; SKYLAKE-LABEL: test_sub_16: 14763; SKYLAKE: # %bb.0: 14764; SKYLAKE-NEXT: #APP 14765; SKYLAKE-NEXT: subw $511, %ax # imm = 0x1FF 14766; SKYLAKE-NEXT: # sched: [1:0.25] 14767; SKYLAKE-NEXT: subw $511, %di # imm = 0x1FF 14768; SKYLAKE-NEXT: # sched: [1:0.25] 14769; SKYLAKE-NEXT: subw $511, (%rsi) # imm = 0x1FF 14770; SKYLAKE-NEXT: # sched: [7:1.00] 14771; SKYLAKE-NEXT: subw $7, %di # sched: [1:0.25] 14772; SKYLAKE-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14773; SKYLAKE-NEXT: subw %dx, %di # sched: [1:0.25] 14774; SKYLAKE-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14775; SKYLAKE-NEXT: subw (%rsi), %di # sched: [6:0.50] 14776; SKYLAKE-NEXT: #NO_APP 14777; SKYLAKE-NEXT: retq # sched: [7:1.00] 14778; 14779; SKX-LABEL: test_sub_16: 14780; SKX: # %bb.0: 14781; SKX-NEXT: #APP 14782; SKX-NEXT: subw $511, %ax # imm = 0x1FF 14783; SKX-NEXT: # sched: [1:0.25] 14784; SKX-NEXT: subw $511, %di # imm = 0x1FF 14785; SKX-NEXT: # sched: [1:0.25] 14786; SKX-NEXT: subw $511, (%rsi) # imm = 0x1FF 14787; SKX-NEXT: # sched: [7:1.00] 14788; SKX-NEXT: subw $7, %di # sched: [1:0.25] 14789; SKX-NEXT: subw $7, (%rsi) # sched: [7:1.00] 14790; SKX-NEXT: subw %dx, %di # sched: [1:0.25] 14791; SKX-NEXT: subw %di, (%rsi) # sched: [7:1.00] 14792; SKX-NEXT: subw (%rsi), %di # sched: [6:0.50] 14793; SKX-NEXT: #NO_APP 14794; SKX-NEXT: retq # sched: [7:1.00] 14795; 14796; BTVER2-LABEL: test_sub_16: 14797; BTVER2: # %bb.0: 14798; BTVER2-NEXT: #APP 14799; BTVER2-NEXT: subw $511, %ax # imm = 0x1FF 14800; BTVER2-NEXT: # sched: [1:0.50] 14801; BTVER2-NEXT: subw $511, %di # imm = 0x1FF 14802; BTVER2-NEXT: # sched: [1:0.50] 14803; BTVER2-NEXT: subw $511, (%rsi) # imm = 0x1FF 14804; BTVER2-NEXT: # sched: [5:1.00] 14805; BTVER2-NEXT: subw $7, %di # sched: [1:0.50] 14806; BTVER2-NEXT: subw $7, (%rsi) # sched: [5:1.00] 14807; BTVER2-NEXT: subw %dx, %di # sched: [1:0.50] 14808; BTVER2-NEXT: subw %di, (%rsi) # sched: [5:1.00] 14809; BTVER2-NEXT: subw (%rsi), %di # sched: [4:1.00] 14810; BTVER2-NEXT: #NO_APP 14811; BTVER2-NEXT: retq # sched: [4:1.00] 14812; 14813; ZNVER1-LABEL: test_sub_16: 14814; ZNVER1: # %bb.0: 14815; ZNVER1-NEXT: #APP 14816; ZNVER1-NEXT: subw $511, %ax # imm = 0x1FF 14817; ZNVER1-NEXT: # sched: [1:0.25] 14818; ZNVER1-NEXT: subw $511, %di # imm = 0x1FF 14819; ZNVER1-NEXT: # sched: [1:0.25] 14820; ZNVER1-NEXT: subw $511, (%rsi) # imm = 0x1FF 14821; ZNVER1-NEXT: # sched: [5:0.50] 14822; ZNVER1-NEXT: subw $7, %di # sched: [1:0.25] 14823; ZNVER1-NEXT: subw $7, (%rsi) # sched: [5:0.50] 14824; ZNVER1-NEXT: subw %dx, %di # sched: [1:0.25] 14825; ZNVER1-NEXT: subw %di, (%rsi) # sched: [5:0.50] 14826; ZNVER1-NEXT: subw (%rsi), %di # sched: [5:0.50] 14827; ZNVER1-NEXT: #NO_APP 14828; ZNVER1-NEXT: retq # sched: [1:0.50] 14829 tail call void asm "subw $3, %AX \0A\09 subw $3, $0 \0A\09 subw $3, $2 \0A\09 subw $4, $0 \0A\09 subw $4, $2 \0A\09 subw $1, $0 \0A\09 subw $0, $2 \0A\09 subw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 14830 ret void 14831} 14832define void @test_sub_32(i32 %a0, i32* %a1, i32 %a2) optsize { 14833; GENERIC-LABEL: test_sub_32: 14834; GENERIC: # %bb.0: 14835; GENERIC-NEXT: #APP 14836; GENERIC-NEXT: subl $665536, %eax # imm = 0xA27C0 14837; GENERIC-NEXT: # sched: [1:0.33] 14838; GENERIC-NEXT: subl $665536, %edi # imm = 0xA27C0 14839; GENERIC-NEXT: # sched: [1:0.33] 14840; GENERIC-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14841; GENERIC-NEXT: # sched: [7:1.00] 14842; GENERIC-NEXT: subl $7, %edi # sched: [1:0.33] 14843; GENERIC-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14844; GENERIC-NEXT: subl %edx, %edi # sched: [1:0.33] 14845; GENERIC-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14846; GENERIC-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14847; GENERIC-NEXT: #NO_APP 14848; GENERIC-NEXT: retq # sched: [1:1.00] 14849; 14850; ATOM-LABEL: test_sub_32: 14851; ATOM: # %bb.0: 14852; ATOM-NEXT: #APP 14853; ATOM-NEXT: subl $665536, %eax # imm = 0xA27C0 14854; ATOM-NEXT: # sched: [1:0.50] 14855; ATOM-NEXT: subl $665536, %edi # imm = 0xA27C0 14856; ATOM-NEXT: # sched: [1:0.50] 14857; ATOM-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14858; ATOM-NEXT: # sched: [1:1.00] 14859; ATOM-NEXT: subl $7, %edi # sched: [1:0.50] 14860; ATOM-NEXT: subl $7, (%rsi) # sched: [1:1.00] 14861; ATOM-NEXT: subl %edx, %edi # sched: [1:0.50] 14862; ATOM-NEXT: subl %edi, (%rsi) # sched: [1:1.00] 14863; ATOM-NEXT: subl (%rsi), %edi # sched: [1:1.00] 14864; ATOM-NEXT: #NO_APP 14865; ATOM-NEXT: retq # sched: [79:39.50] 14866; 14867; SLM-LABEL: test_sub_32: 14868; SLM: # %bb.0: 14869; SLM-NEXT: #APP 14870; SLM-NEXT: subl $665536, %eax # imm = 0xA27C0 14871; SLM-NEXT: # sched: [1:0.50] 14872; SLM-NEXT: subl $665536, %edi # imm = 0xA27C0 14873; SLM-NEXT: # sched: [1:0.50] 14874; SLM-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14875; SLM-NEXT: # sched: [5:2.00] 14876; SLM-NEXT: subl $7, %edi # sched: [1:0.50] 14877; SLM-NEXT: subl $7, (%rsi) # sched: [5:2.00] 14878; SLM-NEXT: subl %edx, %edi # sched: [1:0.50] 14879; SLM-NEXT: subl %edi, (%rsi) # sched: [5:2.00] 14880; SLM-NEXT: subl (%rsi), %edi # sched: [4:1.00] 14881; SLM-NEXT: #NO_APP 14882; SLM-NEXT: retq # sched: [4:1.00] 14883; 14884; SANDY-LABEL: test_sub_32: 14885; SANDY: # %bb.0: 14886; SANDY-NEXT: #APP 14887; SANDY-NEXT: subl $665536, %eax # imm = 0xA27C0 14888; SANDY-NEXT: # sched: [1:0.33] 14889; SANDY-NEXT: subl $665536, %edi # imm = 0xA27C0 14890; SANDY-NEXT: # sched: [1:0.33] 14891; SANDY-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14892; SANDY-NEXT: # sched: [7:1.00] 14893; SANDY-NEXT: subl $7, %edi # sched: [1:0.33] 14894; SANDY-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14895; SANDY-NEXT: subl %edx, %edi # sched: [1:0.33] 14896; SANDY-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14897; SANDY-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14898; SANDY-NEXT: #NO_APP 14899; SANDY-NEXT: retq # sched: [1:1.00] 14900; 14901; HASWELL-LABEL: test_sub_32: 14902; HASWELL: # %bb.0: 14903; HASWELL-NEXT: #APP 14904; HASWELL-NEXT: subl $665536, %eax # imm = 0xA27C0 14905; HASWELL-NEXT: # sched: [1:0.25] 14906; HASWELL-NEXT: subl $665536, %edi # imm = 0xA27C0 14907; HASWELL-NEXT: # sched: [1:0.25] 14908; HASWELL-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14909; HASWELL-NEXT: # sched: [7:1.00] 14910; HASWELL-NEXT: subl $7, %edi # sched: [1:0.25] 14911; HASWELL-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14912; HASWELL-NEXT: subl %edx, %edi # sched: [1:0.25] 14913; HASWELL-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14914; HASWELL-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14915; HASWELL-NEXT: #NO_APP 14916; HASWELL-NEXT: retq # sched: [7:1.00] 14917; 14918; BROADWELL-LABEL: test_sub_32: 14919; BROADWELL: # %bb.0: 14920; BROADWELL-NEXT: #APP 14921; BROADWELL-NEXT: subl $665536, %eax # imm = 0xA27C0 14922; BROADWELL-NEXT: # sched: [1:0.25] 14923; BROADWELL-NEXT: subl $665536, %edi # imm = 0xA27C0 14924; BROADWELL-NEXT: # sched: [1:0.25] 14925; BROADWELL-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14926; BROADWELL-NEXT: # sched: [7:1.00] 14927; BROADWELL-NEXT: subl $7, %edi # sched: [1:0.25] 14928; BROADWELL-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14929; BROADWELL-NEXT: subl %edx, %edi # sched: [1:0.25] 14930; BROADWELL-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14931; BROADWELL-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14932; BROADWELL-NEXT: #NO_APP 14933; BROADWELL-NEXT: retq # sched: [7:1.00] 14934; 14935; SKYLAKE-LABEL: test_sub_32: 14936; SKYLAKE: # %bb.0: 14937; SKYLAKE-NEXT: #APP 14938; SKYLAKE-NEXT: subl $665536, %eax # imm = 0xA27C0 14939; SKYLAKE-NEXT: # sched: [1:0.25] 14940; SKYLAKE-NEXT: subl $665536, %edi # imm = 0xA27C0 14941; SKYLAKE-NEXT: # sched: [1:0.25] 14942; SKYLAKE-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14943; SKYLAKE-NEXT: # sched: [7:1.00] 14944; SKYLAKE-NEXT: subl $7, %edi # sched: [1:0.25] 14945; SKYLAKE-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14946; SKYLAKE-NEXT: subl %edx, %edi # sched: [1:0.25] 14947; SKYLAKE-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14948; SKYLAKE-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14949; SKYLAKE-NEXT: #NO_APP 14950; SKYLAKE-NEXT: retq # sched: [7:1.00] 14951; 14952; SKX-LABEL: test_sub_32: 14953; SKX: # %bb.0: 14954; SKX-NEXT: #APP 14955; SKX-NEXT: subl $665536, %eax # imm = 0xA27C0 14956; SKX-NEXT: # sched: [1:0.25] 14957; SKX-NEXT: subl $665536, %edi # imm = 0xA27C0 14958; SKX-NEXT: # sched: [1:0.25] 14959; SKX-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14960; SKX-NEXT: # sched: [7:1.00] 14961; SKX-NEXT: subl $7, %edi # sched: [1:0.25] 14962; SKX-NEXT: subl $7, (%rsi) # sched: [7:1.00] 14963; SKX-NEXT: subl %edx, %edi # sched: [1:0.25] 14964; SKX-NEXT: subl %edi, (%rsi) # sched: [7:1.00] 14965; SKX-NEXT: subl (%rsi), %edi # sched: [6:0.50] 14966; SKX-NEXT: #NO_APP 14967; SKX-NEXT: retq # sched: [7:1.00] 14968; 14969; BTVER2-LABEL: test_sub_32: 14970; BTVER2: # %bb.0: 14971; BTVER2-NEXT: #APP 14972; BTVER2-NEXT: subl $665536, %eax # imm = 0xA27C0 14973; BTVER2-NEXT: # sched: [1:0.50] 14974; BTVER2-NEXT: subl $665536, %edi # imm = 0xA27C0 14975; BTVER2-NEXT: # sched: [1:0.50] 14976; BTVER2-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14977; BTVER2-NEXT: # sched: [5:1.00] 14978; BTVER2-NEXT: subl $7, %edi # sched: [1:0.50] 14979; BTVER2-NEXT: subl $7, (%rsi) # sched: [5:1.00] 14980; BTVER2-NEXT: subl %edx, %edi # sched: [1:0.50] 14981; BTVER2-NEXT: subl %edi, (%rsi) # sched: [5:1.00] 14982; BTVER2-NEXT: subl (%rsi), %edi # sched: [4:1.00] 14983; BTVER2-NEXT: #NO_APP 14984; BTVER2-NEXT: retq # sched: [4:1.00] 14985; 14986; ZNVER1-LABEL: test_sub_32: 14987; ZNVER1: # %bb.0: 14988; ZNVER1-NEXT: #APP 14989; ZNVER1-NEXT: subl $665536, %eax # imm = 0xA27C0 14990; ZNVER1-NEXT: # sched: [1:0.25] 14991; ZNVER1-NEXT: subl $665536, %edi # imm = 0xA27C0 14992; ZNVER1-NEXT: # sched: [1:0.25] 14993; ZNVER1-NEXT: subl $665536, (%rsi) # imm = 0xA27C0 14994; ZNVER1-NEXT: # sched: [5:0.50] 14995; ZNVER1-NEXT: subl $7, %edi # sched: [1:0.25] 14996; ZNVER1-NEXT: subl $7, (%rsi) # sched: [5:0.50] 14997; ZNVER1-NEXT: subl %edx, %edi # sched: [1:0.25] 14998; ZNVER1-NEXT: subl %edi, (%rsi) # sched: [5:0.50] 14999; ZNVER1-NEXT: subl (%rsi), %edi # sched: [5:0.50] 15000; ZNVER1-NEXT: #NO_APP 15001; ZNVER1-NEXT: retq # sched: [1:0.50] 15002 tail call void asm "subl $3, %EAX \0A\09 subl $3, $0 \0A\09 subl $3, $2 \0A\09 subl $4, $0 \0A\09 subl $4, $2 \0A\09 subl $1, $0 \0A\09 subl $0, $2 \0A\09 subl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 15003 ret void 15004} 15005define void @test_sub_64(i64 %a0, i64* %a1, i64 %a2) optsize { 15006; GENERIC-LABEL: test_sub_64: 15007; GENERIC: # %bb.0: 15008; GENERIC-NEXT: #APP 15009; GENERIC-NEXT: subq $665536, %rax # imm = 0xA27C0 15010; GENERIC-NEXT: # sched: [1:0.33] 15011; GENERIC-NEXT: subq $665536, %rdi # imm = 0xA27C0 15012; GENERIC-NEXT: # sched: [1:0.33] 15013; GENERIC-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15014; GENERIC-NEXT: # sched: [7:1.00] 15015; GENERIC-NEXT: subq $7, %rdi # sched: [1:0.33] 15016; GENERIC-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15017; GENERIC-NEXT: subq %rdx, %rdi # sched: [1:0.33] 15018; GENERIC-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15019; GENERIC-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15020; GENERIC-NEXT: #NO_APP 15021; GENERIC-NEXT: retq # sched: [1:1.00] 15022; 15023; ATOM-LABEL: test_sub_64: 15024; ATOM: # %bb.0: 15025; ATOM-NEXT: #APP 15026; ATOM-NEXT: subq $665536, %rax # imm = 0xA27C0 15027; ATOM-NEXT: # sched: [1:0.50] 15028; ATOM-NEXT: subq $665536, %rdi # imm = 0xA27C0 15029; ATOM-NEXT: # sched: [1:0.50] 15030; ATOM-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15031; ATOM-NEXT: # sched: [1:1.00] 15032; ATOM-NEXT: subq $7, %rdi # sched: [1:0.50] 15033; ATOM-NEXT: subq $7, (%rsi) # sched: [1:1.00] 15034; ATOM-NEXT: subq %rdx, %rdi # sched: [1:0.50] 15035; ATOM-NEXT: subq %rdi, (%rsi) # sched: [1:1.00] 15036; ATOM-NEXT: subq (%rsi), %rdi # sched: [1:1.00] 15037; ATOM-NEXT: #NO_APP 15038; ATOM-NEXT: retq # sched: [79:39.50] 15039; 15040; SLM-LABEL: test_sub_64: 15041; SLM: # %bb.0: 15042; SLM-NEXT: #APP 15043; SLM-NEXT: subq $665536, %rax # imm = 0xA27C0 15044; SLM-NEXT: # sched: [1:0.50] 15045; SLM-NEXT: subq $665536, %rdi # imm = 0xA27C0 15046; SLM-NEXT: # sched: [1:0.50] 15047; SLM-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15048; SLM-NEXT: # sched: [5:2.00] 15049; SLM-NEXT: subq $7, %rdi # sched: [1:0.50] 15050; SLM-NEXT: subq $7, (%rsi) # sched: [5:2.00] 15051; SLM-NEXT: subq %rdx, %rdi # sched: [1:0.50] 15052; SLM-NEXT: subq %rdi, (%rsi) # sched: [5:2.00] 15053; SLM-NEXT: subq (%rsi), %rdi # sched: [4:1.00] 15054; SLM-NEXT: #NO_APP 15055; SLM-NEXT: retq # sched: [4:1.00] 15056; 15057; SANDY-LABEL: test_sub_64: 15058; SANDY: # %bb.0: 15059; SANDY-NEXT: #APP 15060; SANDY-NEXT: subq $665536, %rax # imm = 0xA27C0 15061; SANDY-NEXT: # sched: [1:0.33] 15062; SANDY-NEXT: subq $665536, %rdi # imm = 0xA27C0 15063; SANDY-NEXT: # sched: [1:0.33] 15064; SANDY-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15065; SANDY-NEXT: # sched: [7:1.00] 15066; SANDY-NEXT: subq $7, %rdi # sched: [1:0.33] 15067; SANDY-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15068; SANDY-NEXT: subq %rdx, %rdi # sched: [1:0.33] 15069; SANDY-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15070; SANDY-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15071; SANDY-NEXT: #NO_APP 15072; SANDY-NEXT: retq # sched: [1:1.00] 15073; 15074; HASWELL-LABEL: test_sub_64: 15075; HASWELL: # %bb.0: 15076; HASWELL-NEXT: #APP 15077; HASWELL-NEXT: subq $665536, %rax # imm = 0xA27C0 15078; HASWELL-NEXT: # sched: [1:0.25] 15079; HASWELL-NEXT: subq $665536, %rdi # imm = 0xA27C0 15080; HASWELL-NEXT: # sched: [1:0.25] 15081; HASWELL-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15082; HASWELL-NEXT: # sched: [7:1.00] 15083; HASWELL-NEXT: subq $7, %rdi # sched: [1:0.25] 15084; HASWELL-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15085; HASWELL-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15086; HASWELL-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15087; HASWELL-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15088; HASWELL-NEXT: #NO_APP 15089; HASWELL-NEXT: retq # sched: [7:1.00] 15090; 15091; BROADWELL-LABEL: test_sub_64: 15092; BROADWELL: # %bb.0: 15093; BROADWELL-NEXT: #APP 15094; BROADWELL-NEXT: subq $665536, %rax # imm = 0xA27C0 15095; BROADWELL-NEXT: # sched: [1:0.25] 15096; BROADWELL-NEXT: subq $665536, %rdi # imm = 0xA27C0 15097; BROADWELL-NEXT: # sched: [1:0.25] 15098; BROADWELL-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15099; BROADWELL-NEXT: # sched: [7:1.00] 15100; BROADWELL-NEXT: subq $7, %rdi # sched: [1:0.25] 15101; BROADWELL-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15102; BROADWELL-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15103; BROADWELL-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15104; BROADWELL-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15105; BROADWELL-NEXT: #NO_APP 15106; BROADWELL-NEXT: retq # sched: [7:1.00] 15107; 15108; SKYLAKE-LABEL: test_sub_64: 15109; SKYLAKE: # %bb.0: 15110; SKYLAKE-NEXT: #APP 15111; SKYLAKE-NEXT: subq $665536, %rax # imm = 0xA27C0 15112; SKYLAKE-NEXT: # sched: [1:0.25] 15113; SKYLAKE-NEXT: subq $665536, %rdi # imm = 0xA27C0 15114; SKYLAKE-NEXT: # sched: [1:0.25] 15115; SKYLAKE-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15116; SKYLAKE-NEXT: # sched: [7:1.00] 15117; SKYLAKE-NEXT: subq $7, %rdi # sched: [1:0.25] 15118; SKYLAKE-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15119; SKYLAKE-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15120; SKYLAKE-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15121; SKYLAKE-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15122; SKYLAKE-NEXT: #NO_APP 15123; SKYLAKE-NEXT: retq # sched: [7:1.00] 15124; 15125; SKX-LABEL: test_sub_64: 15126; SKX: # %bb.0: 15127; SKX-NEXT: #APP 15128; SKX-NEXT: subq $665536, %rax # imm = 0xA27C0 15129; SKX-NEXT: # sched: [1:0.25] 15130; SKX-NEXT: subq $665536, %rdi # imm = 0xA27C0 15131; SKX-NEXT: # sched: [1:0.25] 15132; SKX-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15133; SKX-NEXT: # sched: [7:1.00] 15134; SKX-NEXT: subq $7, %rdi # sched: [1:0.25] 15135; SKX-NEXT: subq $7, (%rsi) # sched: [7:1.00] 15136; SKX-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15137; SKX-NEXT: subq %rdi, (%rsi) # sched: [7:1.00] 15138; SKX-NEXT: subq (%rsi), %rdi # sched: [6:0.50] 15139; SKX-NEXT: #NO_APP 15140; SKX-NEXT: retq # sched: [7:1.00] 15141; 15142; BTVER2-LABEL: test_sub_64: 15143; BTVER2: # %bb.0: 15144; BTVER2-NEXT: #APP 15145; BTVER2-NEXT: subq $665536, %rax # imm = 0xA27C0 15146; BTVER2-NEXT: # sched: [1:0.50] 15147; BTVER2-NEXT: subq $665536, %rdi # imm = 0xA27C0 15148; BTVER2-NEXT: # sched: [1:0.50] 15149; BTVER2-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15150; BTVER2-NEXT: # sched: [5:1.00] 15151; BTVER2-NEXT: subq $7, %rdi # sched: [1:0.50] 15152; BTVER2-NEXT: subq $7, (%rsi) # sched: [5:1.00] 15153; BTVER2-NEXT: subq %rdx, %rdi # sched: [1:0.50] 15154; BTVER2-NEXT: subq %rdi, (%rsi) # sched: [5:1.00] 15155; BTVER2-NEXT: subq (%rsi), %rdi # sched: [4:1.00] 15156; BTVER2-NEXT: #NO_APP 15157; BTVER2-NEXT: retq # sched: [4:1.00] 15158; 15159; ZNVER1-LABEL: test_sub_64: 15160; ZNVER1: # %bb.0: 15161; ZNVER1-NEXT: #APP 15162; ZNVER1-NEXT: subq $665536, %rax # imm = 0xA27C0 15163; ZNVER1-NEXT: # sched: [1:0.25] 15164; ZNVER1-NEXT: subq $665536, %rdi # imm = 0xA27C0 15165; ZNVER1-NEXT: # sched: [1:0.25] 15166; ZNVER1-NEXT: subq $665536, (%rsi) # imm = 0xA27C0 15167; ZNVER1-NEXT: # sched: [5:0.50] 15168; ZNVER1-NEXT: subq $7, %rdi # sched: [1:0.25] 15169; ZNVER1-NEXT: subq $7, (%rsi) # sched: [5:0.50] 15170; ZNVER1-NEXT: subq %rdx, %rdi # sched: [1:0.25] 15171; ZNVER1-NEXT: subq %rdi, (%rsi) # sched: [5:0.50] 15172; ZNVER1-NEXT: subq (%rsi), %rdi # sched: [5:0.50] 15173; ZNVER1-NEXT: #NO_APP 15174; ZNVER1-NEXT: retq # sched: [1:0.50] 15175 tail call void asm "subq $3, %RAX \0A\09 subq $3, $0 \0A\09 subq $3, $2 \0A\09 subq $4, $0 \0A\09 subq $4, $2 \0A\09 subq $1, $0 \0A\09 subq $0, $2 \0A\09 subq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 15176 ret void 15177} 15178 15179; TODO - test_swapgs 15180; TODO - test_syscall 15181; TODO - test_sysenter 15182; TODO - test_sysexit 15183; TODO - test_sysret 15184 15185define void @test_test_8(i8 %a0, i8* %a1) optsize { 15186; GENERIC-LABEL: test_test_8: 15187; GENERIC: # %bb.0: 15188; GENERIC-NEXT: #APP 15189; GENERIC-NEXT: testb $7, %al # sched: [1:0.33] 15190; GENERIC-NEXT: testb $7, %dil # sched: [1:0.33] 15191; GENERIC-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15192; GENERIC-NEXT: testb %dil, %dil # sched: [1:0.33] 15193; GENERIC-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15194; GENERIC-NEXT: #NO_APP 15195; GENERIC-NEXT: retq # sched: [1:1.00] 15196; 15197; ATOM-LABEL: test_test_8: 15198; ATOM: # %bb.0: 15199; ATOM-NEXT: #APP 15200; ATOM-NEXT: testb $7, %al # sched: [1:0.50] 15201; ATOM-NEXT: testb $7, %dil # sched: [1:0.50] 15202; ATOM-NEXT: testb $7, (%rsi) # sched: [1:1.00] 15203; ATOM-NEXT: testb %dil, %dil # sched: [1:0.50] 15204; ATOM-NEXT: testb %dil, (%rsi) # sched: [1:1.00] 15205; ATOM-NEXT: #NO_APP 15206; ATOM-NEXT: retq # sched: [79:39.50] 15207; 15208; SLM-LABEL: test_test_8: 15209; SLM: # %bb.0: 15210; SLM-NEXT: #APP 15211; SLM-NEXT: testb $7, %al # sched: [1:0.50] 15212; SLM-NEXT: testb $7, %dil # sched: [1:0.50] 15213; SLM-NEXT: testb $7, (%rsi) # sched: [4:1.00] 15214; SLM-NEXT: testb %dil, %dil # sched: [1:0.50] 15215; SLM-NEXT: testb %dil, (%rsi) # sched: [4:1.00] 15216; SLM-NEXT: #NO_APP 15217; SLM-NEXT: retq # sched: [4:1.00] 15218; 15219; SANDY-LABEL: test_test_8: 15220; SANDY: # %bb.0: 15221; SANDY-NEXT: #APP 15222; SANDY-NEXT: testb $7, %al # sched: [1:0.33] 15223; SANDY-NEXT: testb $7, %dil # sched: [1:0.33] 15224; SANDY-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15225; SANDY-NEXT: testb %dil, %dil # sched: [1:0.33] 15226; SANDY-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15227; SANDY-NEXT: #NO_APP 15228; SANDY-NEXT: retq # sched: [1:1.00] 15229; 15230; HASWELL-LABEL: test_test_8: 15231; HASWELL: # %bb.0: 15232; HASWELL-NEXT: #APP 15233; HASWELL-NEXT: testb $7, %al # sched: [1:0.25] 15234; HASWELL-NEXT: testb $7, %dil # sched: [1:0.25] 15235; HASWELL-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15236; HASWELL-NEXT: testb %dil, %dil # sched: [1:0.25] 15237; HASWELL-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15238; HASWELL-NEXT: #NO_APP 15239; HASWELL-NEXT: retq # sched: [7:1.00] 15240; 15241; BROADWELL-LABEL: test_test_8: 15242; BROADWELL: # %bb.0: 15243; BROADWELL-NEXT: #APP 15244; BROADWELL-NEXT: testb $7, %al # sched: [1:0.25] 15245; BROADWELL-NEXT: testb $7, %dil # sched: [1:0.25] 15246; BROADWELL-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15247; BROADWELL-NEXT: testb %dil, %dil # sched: [1:0.25] 15248; BROADWELL-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15249; BROADWELL-NEXT: #NO_APP 15250; BROADWELL-NEXT: retq # sched: [7:1.00] 15251; 15252; SKYLAKE-LABEL: test_test_8: 15253; SKYLAKE: # %bb.0: 15254; SKYLAKE-NEXT: #APP 15255; SKYLAKE-NEXT: testb $7, %al # sched: [1:0.25] 15256; SKYLAKE-NEXT: testb $7, %dil # sched: [1:0.25] 15257; SKYLAKE-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15258; SKYLAKE-NEXT: testb %dil, %dil # sched: [1:0.25] 15259; SKYLAKE-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15260; SKYLAKE-NEXT: #NO_APP 15261; SKYLAKE-NEXT: retq # sched: [7:1.00] 15262; 15263; SKX-LABEL: test_test_8: 15264; SKX: # %bb.0: 15265; SKX-NEXT: #APP 15266; SKX-NEXT: testb $7, %al # sched: [1:0.25] 15267; SKX-NEXT: testb $7, %dil # sched: [1:0.25] 15268; SKX-NEXT: testb $7, (%rsi) # sched: [6:0.50] 15269; SKX-NEXT: testb %dil, %dil # sched: [1:0.25] 15270; SKX-NEXT: testb %dil, (%rsi) # sched: [6:0.50] 15271; SKX-NEXT: #NO_APP 15272; SKX-NEXT: retq # sched: [7:1.00] 15273; 15274; BTVER2-LABEL: test_test_8: 15275; BTVER2: # %bb.0: 15276; BTVER2-NEXT: #APP 15277; BTVER2-NEXT: testb $7, %al # sched: [1:0.50] 15278; BTVER2-NEXT: testb $7, %dil # sched: [1:0.50] 15279; BTVER2-NEXT: testb $7, (%rsi) # sched: [4:1.00] 15280; BTVER2-NEXT: testb %dil, %dil # sched: [1:0.50] 15281; BTVER2-NEXT: testb %dil, (%rsi) # sched: [4:1.00] 15282; BTVER2-NEXT: #NO_APP 15283; BTVER2-NEXT: retq # sched: [4:1.00] 15284; 15285; ZNVER1-LABEL: test_test_8: 15286; ZNVER1: # %bb.0: 15287; ZNVER1-NEXT: #APP 15288; ZNVER1-NEXT: testb $7, %al # sched: [1:0.25] 15289; ZNVER1-NEXT: testb $7, %dil # sched: [1:0.25] 15290; ZNVER1-NEXT: testb $7, (%rsi) # sched: [5:0.50] 15291; ZNVER1-NEXT: testb %dil, %dil # sched: [1:0.25] 15292; ZNVER1-NEXT: testb %dil, (%rsi) # sched: [5:0.50] 15293; ZNVER1-NEXT: #NO_APP 15294; ZNVER1-NEXT: retq # sched: [1:0.50] 15295 tail call void asm "testb $2, %AL \0A\09 testb $2, $0 \0A\09 testb $2, $1 \0A\09 testb $0, $0 \0A\09 testb $0, $1", "r,*m,i"(i8 %a0, i8* %a1, i8 7) nounwind 15296 ret void 15297} 15298define void @test_test_16(i16 %a0, i16* %a1) optsize { 15299; GENERIC-LABEL: test_test_16: 15300; GENERIC: # %bb.0: 15301; GENERIC-NEXT: #APP 15302; GENERIC-NEXT: testw $511, %ax # imm = 0x1FF 15303; GENERIC-NEXT: # sched: [1:0.33] 15304; GENERIC-NEXT: testw $511, %di # imm = 0x1FF 15305; GENERIC-NEXT: # sched: [1:0.33] 15306; GENERIC-NEXT: testw $511, (%rsi) # imm = 0x1FF 15307; GENERIC-NEXT: # sched: [6:0.50] 15308; GENERIC-NEXT: testw %di, %di # sched: [1:0.33] 15309; GENERIC-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15310; GENERIC-NEXT: #NO_APP 15311; GENERIC-NEXT: retq # sched: [1:1.00] 15312; 15313; ATOM-LABEL: test_test_16: 15314; ATOM: # %bb.0: 15315; ATOM-NEXT: #APP 15316; ATOM-NEXT: testw $511, %ax # imm = 0x1FF 15317; ATOM-NEXT: # sched: [1:0.50] 15318; ATOM-NEXT: testw $511, %di # imm = 0x1FF 15319; ATOM-NEXT: # sched: [1:0.50] 15320; ATOM-NEXT: testw $511, (%rsi) # imm = 0x1FF 15321; ATOM-NEXT: # sched: [1:1.00] 15322; ATOM-NEXT: testw %di, %di # sched: [1:0.50] 15323; ATOM-NEXT: testw %di, (%rsi) # sched: [1:1.00] 15324; ATOM-NEXT: #NO_APP 15325; ATOM-NEXT: retq # sched: [79:39.50] 15326; 15327; SLM-LABEL: test_test_16: 15328; SLM: # %bb.0: 15329; SLM-NEXT: #APP 15330; SLM-NEXT: testw $511, %ax # imm = 0x1FF 15331; SLM-NEXT: # sched: [1:0.50] 15332; SLM-NEXT: testw $511, %di # imm = 0x1FF 15333; SLM-NEXT: # sched: [1:0.50] 15334; SLM-NEXT: testw $511, (%rsi) # imm = 0x1FF 15335; SLM-NEXT: # sched: [4:1.00] 15336; SLM-NEXT: testw %di, %di # sched: [1:0.50] 15337; SLM-NEXT: testw %di, (%rsi) # sched: [4:1.00] 15338; SLM-NEXT: #NO_APP 15339; SLM-NEXT: retq # sched: [4:1.00] 15340; 15341; SANDY-LABEL: test_test_16: 15342; SANDY: # %bb.0: 15343; SANDY-NEXT: #APP 15344; SANDY-NEXT: testw $511, %ax # imm = 0x1FF 15345; SANDY-NEXT: # sched: [1:0.33] 15346; SANDY-NEXT: testw $511, %di # imm = 0x1FF 15347; SANDY-NEXT: # sched: [1:0.33] 15348; SANDY-NEXT: testw $511, (%rsi) # imm = 0x1FF 15349; SANDY-NEXT: # sched: [6:0.50] 15350; SANDY-NEXT: testw %di, %di # sched: [1:0.33] 15351; SANDY-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15352; SANDY-NEXT: #NO_APP 15353; SANDY-NEXT: retq # sched: [1:1.00] 15354; 15355; HASWELL-LABEL: test_test_16: 15356; HASWELL: # %bb.0: 15357; HASWELL-NEXT: #APP 15358; HASWELL-NEXT: testw $511, %ax # imm = 0x1FF 15359; HASWELL-NEXT: # sched: [1:0.25] 15360; HASWELL-NEXT: testw $511, %di # imm = 0x1FF 15361; HASWELL-NEXT: # sched: [1:0.25] 15362; HASWELL-NEXT: testw $511, (%rsi) # imm = 0x1FF 15363; HASWELL-NEXT: # sched: [6:0.50] 15364; HASWELL-NEXT: testw %di, %di # sched: [1:0.25] 15365; HASWELL-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15366; HASWELL-NEXT: #NO_APP 15367; HASWELL-NEXT: retq # sched: [7:1.00] 15368; 15369; BROADWELL-LABEL: test_test_16: 15370; BROADWELL: # %bb.0: 15371; BROADWELL-NEXT: #APP 15372; BROADWELL-NEXT: testw $511, %ax # imm = 0x1FF 15373; BROADWELL-NEXT: # sched: [1:0.25] 15374; BROADWELL-NEXT: testw $511, %di # imm = 0x1FF 15375; BROADWELL-NEXT: # sched: [1:0.25] 15376; BROADWELL-NEXT: testw $511, (%rsi) # imm = 0x1FF 15377; BROADWELL-NEXT: # sched: [6:0.50] 15378; BROADWELL-NEXT: testw %di, %di # sched: [1:0.25] 15379; BROADWELL-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15380; BROADWELL-NEXT: #NO_APP 15381; BROADWELL-NEXT: retq # sched: [7:1.00] 15382; 15383; SKYLAKE-LABEL: test_test_16: 15384; SKYLAKE: # %bb.0: 15385; SKYLAKE-NEXT: #APP 15386; SKYLAKE-NEXT: testw $511, %ax # imm = 0x1FF 15387; SKYLAKE-NEXT: # sched: [1:0.25] 15388; SKYLAKE-NEXT: testw $511, %di # imm = 0x1FF 15389; SKYLAKE-NEXT: # sched: [1:0.25] 15390; SKYLAKE-NEXT: testw $511, (%rsi) # imm = 0x1FF 15391; SKYLAKE-NEXT: # sched: [6:0.50] 15392; SKYLAKE-NEXT: testw %di, %di # sched: [1:0.25] 15393; SKYLAKE-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15394; SKYLAKE-NEXT: #NO_APP 15395; SKYLAKE-NEXT: retq # sched: [7:1.00] 15396; 15397; SKX-LABEL: test_test_16: 15398; SKX: # %bb.0: 15399; SKX-NEXT: #APP 15400; SKX-NEXT: testw $511, %ax # imm = 0x1FF 15401; SKX-NEXT: # sched: [1:0.25] 15402; SKX-NEXT: testw $511, %di # imm = 0x1FF 15403; SKX-NEXT: # sched: [1:0.25] 15404; SKX-NEXT: testw $511, (%rsi) # imm = 0x1FF 15405; SKX-NEXT: # sched: [6:0.50] 15406; SKX-NEXT: testw %di, %di # sched: [1:0.25] 15407; SKX-NEXT: testw %di, (%rsi) # sched: [6:0.50] 15408; SKX-NEXT: #NO_APP 15409; SKX-NEXT: retq # sched: [7:1.00] 15410; 15411; BTVER2-LABEL: test_test_16: 15412; BTVER2: # %bb.0: 15413; BTVER2-NEXT: #APP 15414; BTVER2-NEXT: testw $511, %ax # imm = 0x1FF 15415; BTVER2-NEXT: # sched: [1:0.50] 15416; BTVER2-NEXT: testw $511, %di # imm = 0x1FF 15417; BTVER2-NEXT: # sched: [1:0.50] 15418; BTVER2-NEXT: testw $511, (%rsi) # imm = 0x1FF 15419; BTVER2-NEXT: # sched: [4:1.00] 15420; BTVER2-NEXT: testw %di, %di # sched: [1:0.50] 15421; BTVER2-NEXT: testw %di, (%rsi) # sched: [4:1.00] 15422; BTVER2-NEXT: #NO_APP 15423; BTVER2-NEXT: retq # sched: [4:1.00] 15424; 15425; ZNVER1-LABEL: test_test_16: 15426; ZNVER1: # %bb.0: 15427; ZNVER1-NEXT: #APP 15428; ZNVER1-NEXT: testw $511, %ax # imm = 0x1FF 15429; ZNVER1-NEXT: # sched: [1:0.25] 15430; ZNVER1-NEXT: testw $511, %di # imm = 0x1FF 15431; ZNVER1-NEXT: # sched: [1:0.25] 15432; ZNVER1-NEXT: testw $511, (%rsi) # imm = 0x1FF 15433; ZNVER1-NEXT: # sched: [5:0.50] 15434; ZNVER1-NEXT: testw %di, %di # sched: [1:0.25] 15435; ZNVER1-NEXT: testw %di, (%rsi) # sched: [5:0.50] 15436; ZNVER1-NEXT: #NO_APP 15437; ZNVER1-NEXT: retq # sched: [1:0.50] 15438 tail call void asm "testw $2, %AX \0A\09 testw $2, $0 \0A\09 testw $2, $1 \0A\09 testw $0, $0 \0A\09 testw $0, $1", "r,*m,i"(i16 %a0, i16* %a1, i16 511) nounwind 15439 ret void 15440} 15441define void @test_test_32(i32 %a0, i32* %a1) optsize { 15442; GENERIC-LABEL: test_test_32: 15443; GENERIC: # %bb.0: 15444; GENERIC-NEXT: #APP 15445; GENERIC-NEXT: testl $665536, %eax # imm = 0xA27C0 15446; GENERIC-NEXT: # sched: [1:0.33] 15447; GENERIC-NEXT: testl $665536, %edi # imm = 0xA27C0 15448; GENERIC-NEXT: # sched: [1:0.33] 15449; GENERIC-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15450; GENERIC-NEXT: # sched: [6:0.50] 15451; GENERIC-NEXT: testl %edi, %edi # sched: [1:0.33] 15452; GENERIC-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15453; GENERIC-NEXT: #NO_APP 15454; GENERIC-NEXT: retq # sched: [1:1.00] 15455; 15456; ATOM-LABEL: test_test_32: 15457; ATOM: # %bb.0: 15458; ATOM-NEXT: #APP 15459; ATOM-NEXT: testl $665536, %eax # imm = 0xA27C0 15460; ATOM-NEXT: # sched: [1:0.50] 15461; ATOM-NEXT: testl $665536, %edi # imm = 0xA27C0 15462; ATOM-NEXT: # sched: [1:0.50] 15463; ATOM-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15464; ATOM-NEXT: # sched: [1:1.00] 15465; ATOM-NEXT: testl %edi, %edi # sched: [1:0.50] 15466; ATOM-NEXT: testl %edi, (%rsi) # sched: [1:1.00] 15467; ATOM-NEXT: #NO_APP 15468; ATOM-NEXT: retq # sched: [79:39.50] 15469; 15470; SLM-LABEL: test_test_32: 15471; SLM: # %bb.0: 15472; SLM-NEXT: #APP 15473; SLM-NEXT: testl $665536, %eax # imm = 0xA27C0 15474; SLM-NEXT: # sched: [1:0.50] 15475; SLM-NEXT: testl $665536, %edi # imm = 0xA27C0 15476; SLM-NEXT: # sched: [1:0.50] 15477; SLM-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15478; SLM-NEXT: # sched: [4:1.00] 15479; SLM-NEXT: testl %edi, %edi # sched: [1:0.50] 15480; SLM-NEXT: testl %edi, (%rsi) # sched: [4:1.00] 15481; SLM-NEXT: #NO_APP 15482; SLM-NEXT: retq # sched: [4:1.00] 15483; 15484; SANDY-LABEL: test_test_32: 15485; SANDY: # %bb.0: 15486; SANDY-NEXT: #APP 15487; SANDY-NEXT: testl $665536, %eax # imm = 0xA27C0 15488; SANDY-NEXT: # sched: [1:0.33] 15489; SANDY-NEXT: testl $665536, %edi # imm = 0xA27C0 15490; SANDY-NEXT: # sched: [1:0.33] 15491; SANDY-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15492; SANDY-NEXT: # sched: [6:0.50] 15493; SANDY-NEXT: testl %edi, %edi # sched: [1:0.33] 15494; SANDY-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15495; SANDY-NEXT: #NO_APP 15496; SANDY-NEXT: retq # sched: [1:1.00] 15497; 15498; HASWELL-LABEL: test_test_32: 15499; HASWELL: # %bb.0: 15500; HASWELL-NEXT: #APP 15501; HASWELL-NEXT: testl $665536, %eax # imm = 0xA27C0 15502; HASWELL-NEXT: # sched: [1:0.25] 15503; HASWELL-NEXT: testl $665536, %edi # imm = 0xA27C0 15504; HASWELL-NEXT: # sched: [1:0.25] 15505; HASWELL-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15506; HASWELL-NEXT: # sched: [6:0.50] 15507; HASWELL-NEXT: testl %edi, %edi # sched: [1:0.25] 15508; HASWELL-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15509; HASWELL-NEXT: #NO_APP 15510; HASWELL-NEXT: retq # sched: [7:1.00] 15511; 15512; BROADWELL-LABEL: test_test_32: 15513; BROADWELL: # %bb.0: 15514; BROADWELL-NEXT: #APP 15515; BROADWELL-NEXT: testl $665536, %eax # imm = 0xA27C0 15516; BROADWELL-NEXT: # sched: [1:0.25] 15517; BROADWELL-NEXT: testl $665536, %edi # imm = 0xA27C0 15518; BROADWELL-NEXT: # sched: [1:0.25] 15519; BROADWELL-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15520; BROADWELL-NEXT: # sched: [6:0.50] 15521; BROADWELL-NEXT: testl %edi, %edi # sched: [1:0.25] 15522; BROADWELL-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15523; BROADWELL-NEXT: #NO_APP 15524; BROADWELL-NEXT: retq # sched: [7:1.00] 15525; 15526; SKYLAKE-LABEL: test_test_32: 15527; SKYLAKE: # %bb.0: 15528; SKYLAKE-NEXT: #APP 15529; SKYLAKE-NEXT: testl $665536, %eax # imm = 0xA27C0 15530; SKYLAKE-NEXT: # sched: [1:0.25] 15531; SKYLAKE-NEXT: testl $665536, %edi # imm = 0xA27C0 15532; SKYLAKE-NEXT: # sched: [1:0.25] 15533; SKYLAKE-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15534; SKYLAKE-NEXT: # sched: [6:0.50] 15535; SKYLAKE-NEXT: testl %edi, %edi # sched: [1:0.25] 15536; SKYLAKE-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15537; SKYLAKE-NEXT: #NO_APP 15538; SKYLAKE-NEXT: retq # sched: [7:1.00] 15539; 15540; SKX-LABEL: test_test_32: 15541; SKX: # %bb.0: 15542; SKX-NEXT: #APP 15543; SKX-NEXT: testl $665536, %eax # imm = 0xA27C0 15544; SKX-NEXT: # sched: [1:0.25] 15545; SKX-NEXT: testl $665536, %edi # imm = 0xA27C0 15546; SKX-NEXT: # sched: [1:0.25] 15547; SKX-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15548; SKX-NEXT: # sched: [6:0.50] 15549; SKX-NEXT: testl %edi, %edi # sched: [1:0.25] 15550; SKX-NEXT: testl %edi, (%rsi) # sched: [6:0.50] 15551; SKX-NEXT: #NO_APP 15552; SKX-NEXT: retq # sched: [7:1.00] 15553; 15554; BTVER2-LABEL: test_test_32: 15555; BTVER2: # %bb.0: 15556; BTVER2-NEXT: #APP 15557; BTVER2-NEXT: testl $665536, %eax # imm = 0xA27C0 15558; BTVER2-NEXT: # sched: [1:0.50] 15559; BTVER2-NEXT: testl $665536, %edi # imm = 0xA27C0 15560; BTVER2-NEXT: # sched: [1:0.50] 15561; BTVER2-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15562; BTVER2-NEXT: # sched: [4:1.00] 15563; BTVER2-NEXT: testl %edi, %edi # sched: [1:0.50] 15564; BTVER2-NEXT: testl %edi, (%rsi) # sched: [4:1.00] 15565; BTVER2-NEXT: #NO_APP 15566; BTVER2-NEXT: retq # sched: [4:1.00] 15567; 15568; ZNVER1-LABEL: test_test_32: 15569; ZNVER1: # %bb.0: 15570; ZNVER1-NEXT: #APP 15571; ZNVER1-NEXT: testl $665536, %eax # imm = 0xA27C0 15572; ZNVER1-NEXT: # sched: [1:0.25] 15573; ZNVER1-NEXT: testl $665536, %edi # imm = 0xA27C0 15574; ZNVER1-NEXT: # sched: [1:0.25] 15575; ZNVER1-NEXT: testl $665536, (%rsi) # imm = 0xA27C0 15576; ZNVER1-NEXT: # sched: [5:0.50] 15577; ZNVER1-NEXT: testl %edi, %edi # sched: [1:0.25] 15578; ZNVER1-NEXT: testl %edi, (%rsi) # sched: [5:0.50] 15579; ZNVER1-NEXT: #NO_APP 15580; ZNVER1-NEXT: retq # sched: [1:0.50] 15581 tail call void asm "testl $2, %EAX \0A\09 testl $2, $0 \0A\09 testl $2, $1 \0A\09 testl $0, $0 \0A\09 testl $0, $1", "r,*m,i"(i32 %a0, i32* %a1, i32 665536) nounwind 15582 ret void 15583} 15584define void @test_test_64(i64 %a0, i64* %a1) optsize { 15585; GENERIC-LABEL: test_test_64: 15586; GENERIC: # %bb.0: 15587; GENERIC-NEXT: #APP 15588; GENERIC-NEXT: testq $665536, %rax # imm = 0xA27C0 15589; GENERIC-NEXT: # sched: [1:0.33] 15590; GENERIC-NEXT: testq $665536, %rdi # imm = 0xA27C0 15591; GENERIC-NEXT: # sched: [1:0.33] 15592; GENERIC-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15593; GENERIC-NEXT: # sched: [6:0.50] 15594; GENERIC-NEXT: testq %rdi, %rdi # sched: [1:0.33] 15595; GENERIC-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15596; GENERIC-NEXT: #NO_APP 15597; GENERIC-NEXT: retq # sched: [1:1.00] 15598; 15599; ATOM-LABEL: test_test_64: 15600; ATOM: # %bb.0: 15601; ATOM-NEXT: #APP 15602; ATOM-NEXT: testq $665536, %rax # imm = 0xA27C0 15603; ATOM-NEXT: # sched: [1:0.50] 15604; ATOM-NEXT: testq $665536, %rdi # imm = 0xA27C0 15605; ATOM-NEXT: # sched: [1:0.50] 15606; ATOM-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15607; ATOM-NEXT: # sched: [1:1.00] 15608; ATOM-NEXT: testq %rdi, %rdi # sched: [1:0.50] 15609; ATOM-NEXT: testq %rdi, (%rsi) # sched: [1:1.00] 15610; ATOM-NEXT: #NO_APP 15611; ATOM-NEXT: retq # sched: [79:39.50] 15612; 15613; SLM-LABEL: test_test_64: 15614; SLM: # %bb.0: 15615; SLM-NEXT: #APP 15616; SLM-NEXT: testq $665536, %rax # imm = 0xA27C0 15617; SLM-NEXT: # sched: [1:0.50] 15618; SLM-NEXT: testq $665536, %rdi # imm = 0xA27C0 15619; SLM-NEXT: # sched: [1:0.50] 15620; SLM-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15621; SLM-NEXT: # sched: [4:1.00] 15622; SLM-NEXT: testq %rdi, %rdi # sched: [1:0.50] 15623; SLM-NEXT: testq %rdi, (%rsi) # sched: [4:1.00] 15624; SLM-NEXT: #NO_APP 15625; SLM-NEXT: retq # sched: [4:1.00] 15626; 15627; SANDY-LABEL: test_test_64: 15628; SANDY: # %bb.0: 15629; SANDY-NEXT: #APP 15630; SANDY-NEXT: testq $665536, %rax # imm = 0xA27C0 15631; SANDY-NEXT: # sched: [1:0.33] 15632; SANDY-NEXT: testq $665536, %rdi # imm = 0xA27C0 15633; SANDY-NEXT: # sched: [1:0.33] 15634; SANDY-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15635; SANDY-NEXT: # sched: [6:0.50] 15636; SANDY-NEXT: testq %rdi, %rdi # sched: [1:0.33] 15637; SANDY-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15638; SANDY-NEXT: #NO_APP 15639; SANDY-NEXT: retq # sched: [1:1.00] 15640; 15641; HASWELL-LABEL: test_test_64: 15642; HASWELL: # %bb.0: 15643; HASWELL-NEXT: #APP 15644; HASWELL-NEXT: testq $665536, %rax # imm = 0xA27C0 15645; HASWELL-NEXT: # sched: [1:0.25] 15646; HASWELL-NEXT: testq $665536, %rdi # imm = 0xA27C0 15647; HASWELL-NEXT: # sched: [1:0.25] 15648; HASWELL-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15649; HASWELL-NEXT: # sched: [6:0.50] 15650; HASWELL-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15651; HASWELL-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15652; HASWELL-NEXT: #NO_APP 15653; HASWELL-NEXT: retq # sched: [7:1.00] 15654; 15655; BROADWELL-LABEL: test_test_64: 15656; BROADWELL: # %bb.0: 15657; BROADWELL-NEXT: #APP 15658; BROADWELL-NEXT: testq $665536, %rax # imm = 0xA27C0 15659; BROADWELL-NEXT: # sched: [1:0.25] 15660; BROADWELL-NEXT: testq $665536, %rdi # imm = 0xA27C0 15661; BROADWELL-NEXT: # sched: [1:0.25] 15662; BROADWELL-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15663; BROADWELL-NEXT: # sched: [6:0.50] 15664; BROADWELL-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15665; BROADWELL-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15666; BROADWELL-NEXT: #NO_APP 15667; BROADWELL-NEXT: retq # sched: [7:1.00] 15668; 15669; SKYLAKE-LABEL: test_test_64: 15670; SKYLAKE: # %bb.0: 15671; SKYLAKE-NEXT: #APP 15672; SKYLAKE-NEXT: testq $665536, %rax # imm = 0xA27C0 15673; SKYLAKE-NEXT: # sched: [1:0.25] 15674; SKYLAKE-NEXT: testq $665536, %rdi # imm = 0xA27C0 15675; SKYLAKE-NEXT: # sched: [1:0.25] 15676; SKYLAKE-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15677; SKYLAKE-NEXT: # sched: [6:0.50] 15678; SKYLAKE-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15679; SKYLAKE-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15680; SKYLAKE-NEXT: #NO_APP 15681; SKYLAKE-NEXT: retq # sched: [7:1.00] 15682; 15683; SKX-LABEL: test_test_64: 15684; SKX: # %bb.0: 15685; SKX-NEXT: #APP 15686; SKX-NEXT: testq $665536, %rax # imm = 0xA27C0 15687; SKX-NEXT: # sched: [1:0.25] 15688; SKX-NEXT: testq $665536, %rdi # imm = 0xA27C0 15689; SKX-NEXT: # sched: [1:0.25] 15690; SKX-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15691; SKX-NEXT: # sched: [6:0.50] 15692; SKX-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15693; SKX-NEXT: testq %rdi, (%rsi) # sched: [6:0.50] 15694; SKX-NEXT: #NO_APP 15695; SKX-NEXT: retq # sched: [7:1.00] 15696; 15697; BTVER2-LABEL: test_test_64: 15698; BTVER2: # %bb.0: 15699; BTVER2-NEXT: #APP 15700; BTVER2-NEXT: testq $665536, %rax # imm = 0xA27C0 15701; BTVER2-NEXT: # sched: [1:0.50] 15702; BTVER2-NEXT: testq $665536, %rdi # imm = 0xA27C0 15703; BTVER2-NEXT: # sched: [1:0.50] 15704; BTVER2-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15705; BTVER2-NEXT: # sched: [4:1.00] 15706; BTVER2-NEXT: testq %rdi, %rdi # sched: [1:0.50] 15707; BTVER2-NEXT: testq %rdi, (%rsi) # sched: [4:1.00] 15708; BTVER2-NEXT: #NO_APP 15709; BTVER2-NEXT: retq # sched: [4:1.00] 15710; 15711; ZNVER1-LABEL: test_test_64: 15712; ZNVER1: # %bb.0: 15713; ZNVER1-NEXT: #APP 15714; ZNVER1-NEXT: testq $665536, %rax # imm = 0xA27C0 15715; ZNVER1-NEXT: # sched: [1:0.25] 15716; ZNVER1-NEXT: testq $665536, %rdi # imm = 0xA27C0 15717; ZNVER1-NEXT: # sched: [1:0.25] 15718; ZNVER1-NEXT: testq $665536, (%rsi) # imm = 0xA27C0 15719; ZNVER1-NEXT: # sched: [5:0.50] 15720; ZNVER1-NEXT: testq %rdi, %rdi # sched: [1:0.25] 15721; ZNVER1-NEXT: testq %rdi, (%rsi) # sched: [5:0.50] 15722; ZNVER1-NEXT: #NO_APP 15723; ZNVER1-NEXT: retq # sched: [1:0.50] 15724 tail call void asm "testq $2, %RAX \0A\09 testq $2, $0 \0A\09 testq $2, $1 \0A\09 testq $0, $0 \0A\09 testq $0, $1", "r,*m,i"(i64 %a0, i64* %a1, i32 665536) nounwind 15725 ret void 15726} 15727 15728; TODO: ud0, ud1 15729define void @test_ud2() optsize { 15730; GENERIC-LABEL: test_ud2: 15731; GENERIC: # %bb.0: 15732; GENERIC-NEXT: #APP 15733; GENERIC-NEXT: ud2 # sched: [100:0.33] 15734; GENERIC-NEXT: #NO_APP 15735; GENERIC-NEXT: retq # sched: [1:1.00] 15736; 15737; ATOM-LABEL: test_ud2: 15738; ATOM: # %bb.0: 15739; ATOM-NEXT: #APP 15740; ATOM-NEXT: ud2 # sched: [100:0.50] 15741; ATOM-NEXT: #NO_APP 15742; ATOM-NEXT: retq # sched: [79:39.50] 15743; 15744; SLM-LABEL: test_ud2: 15745; SLM: # %bb.0: 15746; SLM-NEXT: #APP 15747; SLM-NEXT: ud2 # sched: [100:1.00] 15748; SLM-NEXT: #NO_APP 15749; SLM-NEXT: retq # sched: [4:1.00] 15750; 15751; SANDY-LABEL: test_ud2: 15752; SANDY: # %bb.0: 15753; SANDY-NEXT: #APP 15754; SANDY-NEXT: ud2 # sched: [100:0.33] 15755; SANDY-NEXT: #NO_APP 15756; SANDY-NEXT: retq # sched: [1:1.00] 15757; 15758; HASWELL-LABEL: test_ud2: 15759; HASWELL: # %bb.0: 15760; HASWELL-NEXT: #APP 15761; HASWELL-NEXT: ud2 # sched: [100:0.25] 15762; HASWELL-NEXT: #NO_APP 15763; HASWELL-NEXT: retq # sched: [7:1.00] 15764; 15765; BROADWELL-LABEL: test_ud2: 15766; BROADWELL: # %bb.0: 15767; BROADWELL-NEXT: #APP 15768; BROADWELL-NEXT: ud2 # sched: [100:0.25] 15769; BROADWELL-NEXT: #NO_APP 15770; BROADWELL-NEXT: retq # sched: [7:1.00] 15771; 15772; SKYLAKE-LABEL: test_ud2: 15773; SKYLAKE: # %bb.0: 15774; SKYLAKE-NEXT: #APP 15775; SKYLAKE-NEXT: ud2 # sched: [100:0.25] 15776; SKYLAKE-NEXT: #NO_APP 15777; SKYLAKE-NEXT: retq # sched: [7:1.00] 15778; 15779; SKX-LABEL: test_ud2: 15780; SKX: # %bb.0: 15781; SKX-NEXT: #APP 15782; SKX-NEXT: ud2 # sched: [100:0.25] 15783; SKX-NEXT: #NO_APP 15784; SKX-NEXT: retq # sched: [7:1.00] 15785; 15786; BTVER2-LABEL: test_ud2: 15787; BTVER2: # %bb.0: 15788; BTVER2-NEXT: #APP 15789; BTVER2-NEXT: ud2 # sched: [100:0.50] 15790; BTVER2-NEXT: #NO_APP 15791; BTVER2-NEXT: retq # sched: [4:1.00] 15792; 15793; ZNVER1-LABEL: test_ud2: 15794; ZNVER1: # %bb.0: 15795; ZNVER1-NEXT: #APP 15796; ZNVER1-NEXT: ud2 # sched: [100:0.25] 15797; ZNVER1-NEXT: #NO_APP 15798; ZNVER1-NEXT: retq # sched: [1:0.50] 15799 call void asm sideeffect "ud2", ""() 15800 ret void 15801} 15802 15803; TODO - test_verr 15804; TODO - test_verw 15805; TODO - test_vmload 15806; TODO - test_vmmcall 15807; TODO - test_vmrun 15808; TODO - test_vmsave 15809; TODO - test_wbinvd 15810 15811define void @test_xadd_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 15812; GENERIC-LABEL: test_xadd_8: 15813; GENERIC: # %bb.0: 15814; GENERIC-NEXT: #APP 15815; GENERIC-NEXT: xaddb %dil, %sil # sched: [2:1.00] 15816; GENERIC-NEXT: xaddb %dil, (%rdx) # sched: [8:1.00] 15817; GENERIC-NEXT: #NO_APP 15818; GENERIC-NEXT: retq # sched: [1:1.00] 15819; 15820; ATOM-LABEL: test_xadd_8: 15821; ATOM: # %bb.0: 15822; ATOM-NEXT: #APP 15823; ATOM-NEXT: xaddb %dil, %sil # sched: [2:1.00] 15824; ATOM-NEXT: xaddb %dil, (%rdx) # sched: [3:1.50] 15825; ATOM-NEXT: #NO_APP 15826; ATOM-NEXT: retq # sched: [79:39.50] 15827; 15828; SLM-LABEL: test_xadd_8: 15829; SLM: # %bb.0: 15830; SLM-NEXT: #APP 15831; SLM-NEXT: xaddb %dil, %sil # sched: [1:0.50] 15832; SLM-NEXT: xaddb %dil, (%rdx) # sched: [4:2.00] 15833; SLM-NEXT: #NO_APP 15834; SLM-NEXT: retq # sched: [4:1.00] 15835; 15836; SANDY-LABEL: test_xadd_8: 15837; SANDY: # %bb.0: 15838; SANDY-NEXT: #APP 15839; SANDY-NEXT: xaddb %dil, %sil # sched: [2:1.00] 15840; SANDY-NEXT: xaddb %dil, (%rdx) # sched: [8:1.00] 15841; SANDY-NEXT: #NO_APP 15842; SANDY-NEXT: retq # sched: [1:1.00] 15843; 15844; HASWELL-LABEL: test_xadd_8: 15845; HASWELL: # %bb.0: 15846; HASWELL-NEXT: #APP 15847; HASWELL-NEXT: xaddb %dil, %sil # sched: [2:0.75] 15848; HASWELL-NEXT: xaddb %dil, (%rdx) # sched: [8:1.00] 15849; HASWELL-NEXT: #NO_APP 15850; HASWELL-NEXT: retq # sched: [7:1.00] 15851; 15852; BROADWELL-LABEL: test_xadd_8: 15853; BROADWELL: # %bb.0: 15854; BROADWELL-NEXT: #APP 15855; BROADWELL-NEXT: xaddb %dil, %sil # sched: [2:0.75] 15856; BROADWELL-NEXT: xaddb %dil, (%rdx) # sched: [7:1.00] 15857; BROADWELL-NEXT: #NO_APP 15858; BROADWELL-NEXT: retq # sched: [7:1.00] 15859; 15860; SKYLAKE-LABEL: test_xadd_8: 15861; SKYLAKE: # %bb.0: 15862; SKYLAKE-NEXT: #APP 15863; SKYLAKE-NEXT: xaddb %dil, %sil # sched: [2:0.75] 15864; SKYLAKE-NEXT: xaddb %dil, (%rdx) # sched: [7:1.00] 15865; SKYLAKE-NEXT: #NO_APP 15866; SKYLAKE-NEXT: retq # sched: [7:1.00] 15867; 15868; SKX-LABEL: test_xadd_8: 15869; SKX: # %bb.0: 15870; SKX-NEXT: #APP 15871; SKX-NEXT: xaddb %dil, %sil # sched: [2:0.75] 15872; SKX-NEXT: xaddb %dil, (%rdx) # sched: [7:1.00] 15873; SKX-NEXT: #NO_APP 15874; SKX-NEXT: retq # sched: [7:1.00] 15875; 15876; BTVER2-LABEL: test_xadd_8: 15877; BTVER2: # %bb.0: 15878; BTVER2-NEXT: #APP 15879; BTVER2-NEXT: xaddb %dil, %sil # sched: [1:0.50] 15880; BTVER2-NEXT: xaddb %dil, (%rdx) # sched: [4:1.00] 15881; BTVER2-NEXT: #NO_APP 15882; BTVER2-NEXT: retq # sched: [4:1.00] 15883; 15884; ZNVER1-LABEL: test_xadd_8: 15885; ZNVER1: # %bb.0: 15886; ZNVER1-NEXT: #APP 15887; ZNVER1-NEXT: xaddb %dil, %sil # sched: [1:0.25] 15888; ZNVER1-NEXT: xaddb %dil, (%rdx) # sched: [100:0.25] 15889; ZNVER1-NEXT: #NO_APP 15890; ZNVER1-NEXT: retq # sched: [1:0.50] 15891 tail call void asm "xaddb $0, $1 \0A\09 xaddb $0, $2", "r,r,*m"(i8 %a0, i8 %a1, i8 *%a2) nounwind 15892 ret void 15893} 15894define void @test_xadd_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 15895; GENERIC-LABEL: test_xadd_16: 15896; GENERIC: # %bb.0: 15897; GENERIC-NEXT: #APP 15898; GENERIC-NEXT: xaddw %di, %si # sched: [2:1.00] 15899; GENERIC-NEXT: xaddw %di, (%rdx) # sched: [8:1.00] 15900; GENERIC-NEXT: #NO_APP 15901; GENERIC-NEXT: retq # sched: [1:1.00] 15902; 15903; ATOM-LABEL: test_xadd_16: 15904; ATOM: # %bb.0: 15905; ATOM-NEXT: #APP 15906; ATOM-NEXT: xaddw %di, %si # sched: [2:1.00] 15907; ATOM-NEXT: xaddw %di, (%rdx) # sched: [3:1.50] 15908; ATOM-NEXT: #NO_APP 15909; ATOM-NEXT: retq # sched: [79:39.50] 15910; 15911; SLM-LABEL: test_xadd_16: 15912; SLM: # %bb.0: 15913; SLM-NEXT: #APP 15914; SLM-NEXT: xaddw %di, %si # sched: [1:0.50] 15915; SLM-NEXT: xaddw %di, (%rdx) # sched: [4:2.00] 15916; SLM-NEXT: #NO_APP 15917; SLM-NEXT: retq # sched: [4:1.00] 15918; 15919; SANDY-LABEL: test_xadd_16: 15920; SANDY: # %bb.0: 15921; SANDY-NEXT: #APP 15922; SANDY-NEXT: xaddw %di, %si # sched: [2:1.00] 15923; SANDY-NEXT: xaddw %di, (%rdx) # sched: [8:1.00] 15924; SANDY-NEXT: #NO_APP 15925; SANDY-NEXT: retq # sched: [1:1.00] 15926; 15927; HASWELL-LABEL: test_xadd_16: 15928; HASWELL: # %bb.0: 15929; HASWELL-NEXT: #APP 15930; HASWELL-NEXT: xaddw %di, %si # sched: [2:0.75] 15931; HASWELL-NEXT: xaddw %di, (%rdx) # sched: [8:1.00] 15932; HASWELL-NEXT: #NO_APP 15933; HASWELL-NEXT: retq # sched: [7:1.00] 15934; 15935; BROADWELL-LABEL: test_xadd_16: 15936; BROADWELL: # %bb.0: 15937; BROADWELL-NEXT: #APP 15938; BROADWELL-NEXT: xaddw %di, %si # sched: [2:0.75] 15939; BROADWELL-NEXT: xaddw %di, (%rdx) # sched: [7:1.00] 15940; BROADWELL-NEXT: #NO_APP 15941; BROADWELL-NEXT: retq # sched: [7:1.00] 15942; 15943; SKYLAKE-LABEL: test_xadd_16: 15944; SKYLAKE: # %bb.0: 15945; SKYLAKE-NEXT: #APP 15946; SKYLAKE-NEXT: xaddw %di, %si # sched: [2:0.75] 15947; SKYLAKE-NEXT: xaddw %di, (%rdx) # sched: [7:1.00] 15948; SKYLAKE-NEXT: #NO_APP 15949; SKYLAKE-NEXT: retq # sched: [7:1.00] 15950; 15951; SKX-LABEL: test_xadd_16: 15952; SKX: # %bb.0: 15953; SKX-NEXT: #APP 15954; SKX-NEXT: xaddw %di, %si # sched: [2:0.75] 15955; SKX-NEXT: xaddw %di, (%rdx) # sched: [7:1.00] 15956; SKX-NEXT: #NO_APP 15957; SKX-NEXT: retq # sched: [7:1.00] 15958; 15959; BTVER2-LABEL: test_xadd_16: 15960; BTVER2: # %bb.0: 15961; BTVER2-NEXT: #APP 15962; BTVER2-NEXT: xaddw %di, %si # sched: [1:0.50] 15963; BTVER2-NEXT: xaddw %di, (%rdx) # sched: [4:1.00] 15964; BTVER2-NEXT: #NO_APP 15965; BTVER2-NEXT: retq # sched: [4:1.00] 15966; 15967; ZNVER1-LABEL: test_xadd_16: 15968; ZNVER1: # %bb.0: 15969; ZNVER1-NEXT: #APP 15970; ZNVER1-NEXT: xaddw %di, %si # sched: [1:0.25] 15971; ZNVER1-NEXT: xaddw %di, (%rdx) # sched: [100:0.25] 15972; ZNVER1-NEXT: #NO_APP 15973; ZNVER1-NEXT: retq # sched: [1:0.50] 15974 tail call void asm "xaddw $0, $1 \0A\09 xaddw $0, $2", "r,r,*m"(i16 %a0, i16 %a1, i16 *%a2) nounwind 15975 ret void 15976} 15977define void @test_xadd_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 15978; GENERIC-LABEL: test_xadd_32: 15979; GENERIC: # %bb.0: 15980; GENERIC-NEXT: #APP 15981; GENERIC-NEXT: xaddl %edi, %esi # sched: [2:1.00] 15982; GENERIC-NEXT: xaddl %edi, (%rdx) # sched: [8:1.00] 15983; GENERIC-NEXT: #NO_APP 15984; GENERIC-NEXT: retq # sched: [1:1.00] 15985; 15986; ATOM-LABEL: test_xadd_32: 15987; ATOM: # %bb.0: 15988; ATOM-NEXT: #APP 15989; ATOM-NEXT: xaddl %edi, %esi # sched: [2:1.00] 15990; ATOM-NEXT: xaddl %edi, (%rdx) # sched: [3:1.50] 15991; ATOM-NEXT: #NO_APP 15992; ATOM-NEXT: retq # sched: [79:39.50] 15993; 15994; SLM-LABEL: test_xadd_32: 15995; SLM: # %bb.0: 15996; SLM-NEXT: #APP 15997; SLM-NEXT: xaddl %edi, %esi # sched: [1:0.50] 15998; SLM-NEXT: xaddl %edi, (%rdx) # sched: [4:2.00] 15999; SLM-NEXT: #NO_APP 16000; SLM-NEXT: retq # sched: [4:1.00] 16001; 16002; SANDY-LABEL: test_xadd_32: 16003; SANDY: # %bb.0: 16004; SANDY-NEXT: #APP 16005; SANDY-NEXT: xaddl %edi, %esi # sched: [2:1.00] 16006; SANDY-NEXT: xaddl %edi, (%rdx) # sched: [8:1.00] 16007; SANDY-NEXT: #NO_APP 16008; SANDY-NEXT: retq # sched: [1:1.00] 16009; 16010; HASWELL-LABEL: test_xadd_32: 16011; HASWELL: # %bb.0: 16012; HASWELL-NEXT: #APP 16013; HASWELL-NEXT: xaddl %edi, %esi # sched: [2:0.75] 16014; HASWELL-NEXT: xaddl %edi, (%rdx) # sched: [8:1.00] 16015; HASWELL-NEXT: #NO_APP 16016; HASWELL-NEXT: retq # sched: [7:1.00] 16017; 16018; BROADWELL-LABEL: test_xadd_32: 16019; BROADWELL: # %bb.0: 16020; BROADWELL-NEXT: #APP 16021; BROADWELL-NEXT: xaddl %edi, %esi # sched: [2:0.75] 16022; BROADWELL-NEXT: xaddl %edi, (%rdx) # sched: [7:1.00] 16023; BROADWELL-NEXT: #NO_APP 16024; BROADWELL-NEXT: retq # sched: [7:1.00] 16025; 16026; SKYLAKE-LABEL: test_xadd_32: 16027; SKYLAKE: # %bb.0: 16028; SKYLAKE-NEXT: #APP 16029; SKYLAKE-NEXT: xaddl %edi, %esi # sched: [2:0.75] 16030; SKYLAKE-NEXT: xaddl %edi, (%rdx) # sched: [7:1.00] 16031; SKYLAKE-NEXT: #NO_APP 16032; SKYLAKE-NEXT: retq # sched: [7:1.00] 16033; 16034; SKX-LABEL: test_xadd_32: 16035; SKX: # %bb.0: 16036; SKX-NEXT: #APP 16037; SKX-NEXT: xaddl %edi, %esi # sched: [2:0.75] 16038; SKX-NEXT: xaddl %edi, (%rdx) # sched: [7:1.00] 16039; SKX-NEXT: #NO_APP 16040; SKX-NEXT: retq # sched: [7:1.00] 16041; 16042; BTVER2-LABEL: test_xadd_32: 16043; BTVER2: # %bb.0: 16044; BTVER2-NEXT: #APP 16045; BTVER2-NEXT: xaddl %edi, %esi # sched: [1:0.50] 16046; BTVER2-NEXT: xaddl %edi, (%rdx) # sched: [4:1.00] 16047; BTVER2-NEXT: #NO_APP 16048; BTVER2-NEXT: retq # sched: [4:1.00] 16049; 16050; ZNVER1-LABEL: test_xadd_32: 16051; ZNVER1: # %bb.0: 16052; ZNVER1-NEXT: #APP 16053; ZNVER1-NEXT: xaddl %edi, %esi # sched: [1:0.25] 16054; ZNVER1-NEXT: xaddl %edi, (%rdx) # sched: [100:0.25] 16055; ZNVER1-NEXT: #NO_APP 16056; ZNVER1-NEXT: retq # sched: [1:0.50] 16057 tail call void asm "xaddl $0, $1 \0A\09 xaddl $0, $2", "r,r,*m"(i32 %a0, i32 %a1, i32 *%a2) nounwind 16058 ret void 16059} 16060define void @test_xadd_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 16061; GENERIC-LABEL: test_xadd_64: 16062; GENERIC: # %bb.0: 16063; GENERIC-NEXT: #APP 16064; GENERIC-NEXT: xaddq %rdi, %rsi # sched: [2:1.00] 16065; GENERIC-NEXT: xaddq %rdi, (%rdx) # sched: [8:1.00] 16066; GENERIC-NEXT: #NO_APP 16067; GENERIC-NEXT: retq # sched: [1:1.00] 16068; 16069; ATOM-LABEL: test_xadd_64: 16070; ATOM: # %bb.0: 16071; ATOM-NEXT: #APP 16072; ATOM-NEXT: xaddq %rdi, %rsi # sched: [2:1.00] 16073; ATOM-NEXT: xaddq %rdi, (%rdx) # sched: [3:1.50] 16074; ATOM-NEXT: #NO_APP 16075; ATOM-NEXT: retq # sched: [79:39.50] 16076; 16077; SLM-LABEL: test_xadd_64: 16078; SLM: # %bb.0: 16079; SLM-NEXT: #APP 16080; SLM-NEXT: xaddq %rdi, %rsi # sched: [1:0.50] 16081; SLM-NEXT: xaddq %rdi, (%rdx) # sched: [4:2.00] 16082; SLM-NEXT: #NO_APP 16083; SLM-NEXT: retq # sched: [4:1.00] 16084; 16085; SANDY-LABEL: test_xadd_64: 16086; SANDY: # %bb.0: 16087; SANDY-NEXT: #APP 16088; SANDY-NEXT: xaddq %rdi, %rsi # sched: [2:1.00] 16089; SANDY-NEXT: xaddq %rdi, (%rdx) # sched: [8:1.00] 16090; SANDY-NEXT: #NO_APP 16091; SANDY-NEXT: retq # sched: [1:1.00] 16092; 16093; HASWELL-LABEL: test_xadd_64: 16094; HASWELL: # %bb.0: 16095; HASWELL-NEXT: #APP 16096; HASWELL-NEXT: xaddq %rdi, %rsi # sched: [2:0.75] 16097; HASWELL-NEXT: xaddq %rdi, (%rdx) # sched: [8:1.00] 16098; HASWELL-NEXT: #NO_APP 16099; HASWELL-NEXT: retq # sched: [7:1.00] 16100; 16101; BROADWELL-LABEL: test_xadd_64: 16102; BROADWELL: # %bb.0: 16103; BROADWELL-NEXT: #APP 16104; BROADWELL-NEXT: xaddq %rdi, %rsi # sched: [2:0.75] 16105; BROADWELL-NEXT: xaddq %rdi, (%rdx) # sched: [7:1.00] 16106; BROADWELL-NEXT: #NO_APP 16107; BROADWELL-NEXT: retq # sched: [7:1.00] 16108; 16109; SKYLAKE-LABEL: test_xadd_64: 16110; SKYLAKE: # %bb.0: 16111; SKYLAKE-NEXT: #APP 16112; SKYLAKE-NEXT: xaddq %rdi, %rsi # sched: [2:0.75] 16113; SKYLAKE-NEXT: xaddq %rdi, (%rdx) # sched: [7:1.00] 16114; SKYLAKE-NEXT: #NO_APP 16115; SKYLAKE-NEXT: retq # sched: [7:1.00] 16116; 16117; SKX-LABEL: test_xadd_64: 16118; SKX: # %bb.0: 16119; SKX-NEXT: #APP 16120; SKX-NEXT: xaddq %rdi, %rsi # sched: [2:0.75] 16121; SKX-NEXT: xaddq %rdi, (%rdx) # sched: [7:1.00] 16122; SKX-NEXT: #NO_APP 16123; SKX-NEXT: retq # sched: [7:1.00] 16124; 16125; BTVER2-LABEL: test_xadd_64: 16126; BTVER2: # %bb.0: 16127; BTVER2-NEXT: #APP 16128; BTVER2-NEXT: xaddq %rdi, %rsi # sched: [1:0.50] 16129; BTVER2-NEXT: xaddq %rdi, (%rdx) # sched: [4:1.00] 16130; BTVER2-NEXT: #NO_APP 16131; BTVER2-NEXT: retq # sched: [4:1.00] 16132; 16133; ZNVER1-LABEL: test_xadd_64: 16134; ZNVER1: # %bb.0: 16135; ZNVER1-NEXT: #APP 16136; ZNVER1-NEXT: xaddq %rdi, %rsi # sched: [1:0.25] 16137; ZNVER1-NEXT: xaddq %rdi, (%rdx) # sched: [100:0.25] 16138; ZNVER1-NEXT: #NO_APP 16139; ZNVER1-NEXT: retq # sched: [1:0.50] 16140 tail call void asm "xaddq $0, $1 \0A\09 xaddq $0, $2", "r,r,*m"(i64 %a0, i64 %a1, i64 *%a2) nounwind 16141 ret void 16142} 16143 16144define void @test_xchg_8(i8 %a0, i8 %a1, i8 *%a2) optsize { 16145; GENERIC-LABEL: test_xchg_8: 16146; GENERIC: # %bb.0: 16147; GENERIC-NEXT: #APP 16148; GENERIC-NEXT: xchgb %sil, %dil # sched: [2:1.00] 16149; GENERIC-NEXT: xchgb %dil, (%rdx) # sched: [6:1.00] 16150; GENERIC-NEXT: #NO_APP 16151; GENERIC-NEXT: retq # sched: [1:1.00] 16152; 16153; ATOM-LABEL: test_xchg_8: 16154; ATOM: # %bb.0: 16155; ATOM-NEXT: #APP 16156; ATOM-NEXT: xchgb %sil, %dil # sched: [2:1.00] 16157; ATOM-NEXT: xchgb %dil, (%rdx) # sched: [3:1.50] 16158; ATOM-NEXT: #NO_APP 16159; ATOM-NEXT: retq # sched: [79:39.50] 16160; 16161; SLM-LABEL: test_xchg_8: 16162; SLM: # %bb.0: 16163; SLM-NEXT: #APP 16164; SLM-NEXT: xchgb %sil, %dil # sched: [1:0.50] 16165; SLM-NEXT: xchgb %dil, (%rdx) # sched: [4:2.00] 16166; SLM-NEXT: #NO_APP 16167; SLM-NEXT: retq # sched: [4:1.00] 16168; 16169; SANDY-LABEL: test_xchg_8: 16170; SANDY: # %bb.0: 16171; SANDY-NEXT: #APP 16172; SANDY-NEXT: xchgb %sil, %dil # sched: [2:1.00] 16173; SANDY-NEXT: xchgb %dil, (%rdx) # sched: [6:1.00] 16174; SANDY-NEXT: #NO_APP 16175; SANDY-NEXT: retq # sched: [1:1.00] 16176; 16177; HASWELL-LABEL: test_xchg_8: 16178; HASWELL: # %bb.0: 16179; HASWELL-NEXT: #APP 16180; HASWELL-NEXT: xchgb %sil, %dil # sched: [2:0.75] 16181; HASWELL-NEXT: xchgb %dil, (%rdx) # sched: [9:1.00] 16182; HASWELL-NEXT: #NO_APP 16183; HASWELL-NEXT: retq # sched: [7:1.00] 16184; 16185; BROADWELL-LABEL: test_xchg_8: 16186; BROADWELL: # %bb.0: 16187; BROADWELL-NEXT: #APP 16188; BROADWELL-NEXT: xchgb %sil, %dil # sched: [2:0.75] 16189; BROADWELL-NEXT: xchgb %dil, (%rdx) # sched: [8:1.00] 16190; BROADWELL-NEXT: #NO_APP 16191; BROADWELL-NEXT: retq # sched: [7:1.00] 16192; 16193; SKYLAKE-LABEL: test_xchg_8: 16194; SKYLAKE: # %bb.0: 16195; SKYLAKE-NEXT: #APP 16196; SKYLAKE-NEXT: xchgb %sil, %dil # sched: [2:0.75] 16197; SKYLAKE-NEXT: xchgb %dil, (%rdx) # sched: [10:1.25] 16198; SKYLAKE-NEXT: #NO_APP 16199; SKYLAKE-NEXT: retq # sched: [7:1.00] 16200; 16201; SKX-LABEL: test_xchg_8: 16202; SKX: # %bb.0: 16203; SKX-NEXT: #APP 16204; SKX-NEXT: xchgb %sil, %dil # sched: [2:0.75] 16205; SKX-NEXT: xchgb %dil, (%rdx) # sched: [10:1.25] 16206; SKX-NEXT: #NO_APP 16207; SKX-NEXT: retq # sched: [7:1.00] 16208; 16209; BTVER2-LABEL: test_xchg_8: 16210; BTVER2: # %bb.0: 16211; BTVER2-NEXT: #APP 16212; BTVER2-NEXT: xchgb %sil, %dil # sched: [1:0.50] 16213; BTVER2-NEXT: xchgb %dil, (%rdx) # sched: [4:1.00] 16214; BTVER2-NEXT: #NO_APP 16215; BTVER2-NEXT: retq # sched: [4:1.00] 16216; 16217; ZNVER1-LABEL: test_xchg_8: 16218; ZNVER1: # %bb.0: 16219; ZNVER1-NEXT: #APP 16220; ZNVER1-NEXT: xchgb %sil, %dil # sched: [1:0.50] 16221; ZNVER1-NEXT: xchgb %dil, (%rdx) # sched: [5:0.50] 16222; ZNVER1-NEXT: #NO_APP 16223; ZNVER1-NEXT: retq # sched: [1:0.50] 16224 tail call void asm "xchg $1, $0 \0A\09 xchg $2, $0", "r,r,*m"(i8 %a0, i8 %a1, i8 *%a2) nounwind 16225 ret void 16226} 16227define void @test_xchg_16(i16 %a0, i16 %a1, i16 *%a2) optsize { 16228; GENERIC-LABEL: test_xchg_16: 16229; GENERIC: # %bb.0: 16230; GENERIC-NEXT: #APP 16231; GENERIC-NEXT: xchgw %di, %ax # sched: [2:1.00] 16232; GENERIC-NEXT: xchgw %si, %di # sched: [2:1.00] 16233; GENERIC-NEXT: xchgw %di, (%rdx) # sched: [6:1.00] 16234; GENERIC-NEXT: #NO_APP 16235; GENERIC-NEXT: retq # sched: [1:1.00] 16236; 16237; ATOM-LABEL: test_xchg_16: 16238; ATOM: # %bb.0: 16239; ATOM-NEXT: #APP 16240; ATOM-NEXT: xchgw %di, %ax # sched: [2:1.00] 16241; ATOM-NEXT: xchgw %si, %di # sched: [2:1.00] 16242; ATOM-NEXT: xchgw %di, (%rdx) # sched: [3:1.50] 16243; ATOM-NEXT: #NO_APP 16244; ATOM-NEXT: retq # sched: [79:39.50] 16245; 16246; SLM-LABEL: test_xchg_16: 16247; SLM: # %bb.0: 16248; SLM-NEXT: #APP 16249; SLM-NEXT: xchgw %di, %ax # sched: [1:0.50] 16250; SLM-NEXT: xchgw %si, %di # sched: [1:0.50] 16251; SLM-NEXT: xchgw %di, (%rdx) # sched: [4:2.00] 16252; SLM-NEXT: #NO_APP 16253; SLM-NEXT: retq # sched: [4:1.00] 16254; 16255; SANDY-LABEL: test_xchg_16: 16256; SANDY: # %bb.0: 16257; SANDY-NEXT: #APP 16258; SANDY-NEXT: xchgw %di, %ax # sched: [2:1.00] 16259; SANDY-NEXT: xchgw %si, %di # sched: [2:1.00] 16260; SANDY-NEXT: xchgw %di, (%rdx) # sched: [6:1.00] 16261; SANDY-NEXT: #NO_APP 16262; SANDY-NEXT: retq # sched: [1:1.00] 16263; 16264; HASWELL-LABEL: test_xchg_16: 16265; HASWELL: # %bb.0: 16266; HASWELL-NEXT: #APP 16267; HASWELL-NEXT: xchgw %di, %ax # sched: [2:0.75] 16268; HASWELL-NEXT: xchgw %si, %di # sched: [2:0.75] 16269; HASWELL-NEXT: xchgw %di, (%rdx) # sched: [9:1.00] 16270; HASWELL-NEXT: #NO_APP 16271; HASWELL-NEXT: retq # sched: [7:1.00] 16272; 16273; BROADWELL-LABEL: test_xchg_16: 16274; BROADWELL: # %bb.0: 16275; BROADWELL-NEXT: #APP 16276; BROADWELL-NEXT: xchgw %di, %ax # sched: [2:0.75] 16277; BROADWELL-NEXT: xchgw %si, %di # sched: [2:0.75] 16278; BROADWELL-NEXT: xchgw %di, (%rdx) # sched: [8:1.00] 16279; BROADWELL-NEXT: #NO_APP 16280; BROADWELL-NEXT: retq # sched: [7:1.00] 16281; 16282; SKYLAKE-LABEL: test_xchg_16: 16283; SKYLAKE: # %bb.0: 16284; SKYLAKE-NEXT: #APP 16285; SKYLAKE-NEXT: xchgw %di, %ax # sched: [2:0.75] 16286; SKYLAKE-NEXT: xchgw %si, %di # sched: [2:0.75] 16287; SKYLAKE-NEXT: xchgw %di, (%rdx) # sched: [10:1.25] 16288; SKYLAKE-NEXT: #NO_APP 16289; SKYLAKE-NEXT: retq # sched: [7:1.00] 16290; 16291; SKX-LABEL: test_xchg_16: 16292; SKX: # %bb.0: 16293; SKX-NEXT: #APP 16294; SKX-NEXT: xchgw %di, %ax # sched: [2:0.75] 16295; SKX-NEXT: xchgw %si, %di # sched: [2:0.75] 16296; SKX-NEXT: xchgw %di, (%rdx) # sched: [10:1.25] 16297; SKX-NEXT: #NO_APP 16298; SKX-NEXT: retq # sched: [7:1.00] 16299; 16300; BTVER2-LABEL: test_xchg_16: 16301; BTVER2: # %bb.0: 16302; BTVER2-NEXT: #APP 16303; BTVER2-NEXT: xchgw %di, %ax # sched: [1:0.50] 16304; BTVER2-NEXT: xchgw %si, %di # sched: [1:0.50] 16305; BTVER2-NEXT: xchgw %di, (%rdx) # sched: [4:1.00] 16306; BTVER2-NEXT: #NO_APP 16307; BTVER2-NEXT: retq # sched: [4:1.00] 16308; 16309; ZNVER1-LABEL: test_xchg_16: 16310; ZNVER1: # %bb.0: 16311; ZNVER1-NEXT: #APP 16312; ZNVER1-NEXT: xchgw %di, %ax # sched: [1:0.50] 16313; ZNVER1-NEXT: xchgw %si, %di # sched: [1:0.50] 16314; ZNVER1-NEXT: xchgw %di, (%rdx) # sched: [5:0.50] 16315; ZNVER1-NEXT: #NO_APP 16316; ZNVER1-NEXT: retq # sched: [1:0.50] 16317 tail call void asm "xchg %AX, $0 \0A\09 xchg $1, $0 \0A\09 xchg $2, $0", "r,r,*m"(i16 %a0, i16 %a1, i16 *%a2) nounwind 16318 ret void 16319} 16320define void @test_xchg_32(i32 %a0, i32 %a1, i32 *%a2) optsize { 16321; GENERIC-LABEL: test_xchg_32: 16322; GENERIC: # %bb.0: 16323; GENERIC-NEXT: #APP 16324; GENERIC-NEXT: xchgl %edi, %eax # sched: [2:1.00] 16325; GENERIC-NEXT: xchgl %esi, %edi # sched: [2:1.00] 16326; GENERIC-NEXT: xchgl %edi, (%rdx) # sched: [6:1.00] 16327; GENERIC-NEXT: #NO_APP 16328; GENERIC-NEXT: retq # sched: [1:1.00] 16329; 16330; ATOM-LABEL: test_xchg_32: 16331; ATOM: # %bb.0: 16332; ATOM-NEXT: #APP 16333; ATOM-NEXT: xchgl %edi, %eax # sched: [2:1.00] 16334; ATOM-NEXT: xchgl %esi, %edi # sched: [2:1.00] 16335; ATOM-NEXT: xchgl %edi, (%rdx) # sched: [3:1.50] 16336; ATOM-NEXT: #NO_APP 16337; ATOM-NEXT: retq # sched: [79:39.50] 16338; 16339; SLM-LABEL: test_xchg_32: 16340; SLM: # %bb.0: 16341; SLM-NEXT: #APP 16342; SLM-NEXT: xchgl %edi, %eax # sched: [1:0.50] 16343; SLM-NEXT: xchgl %esi, %edi # sched: [1:0.50] 16344; SLM-NEXT: xchgl %edi, (%rdx) # sched: [4:2.00] 16345; SLM-NEXT: #NO_APP 16346; SLM-NEXT: retq # sched: [4:1.00] 16347; 16348; SANDY-LABEL: test_xchg_32: 16349; SANDY: # %bb.0: 16350; SANDY-NEXT: #APP 16351; SANDY-NEXT: xchgl %edi, %eax # sched: [2:1.00] 16352; SANDY-NEXT: xchgl %esi, %edi # sched: [2:1.00] 16353; SANDY-NEXT: xchgl %edi, (%rdx) # sched: [6:1.00] 16354; SANDY-NEXT: #NO_APP 16355; SANDY-NEXT: retq # sched: [1:1.00] 16356; 16357; HASWELL-LABEL: test_xchg_32: 16358; HASWELL: # %bb.0: 16359; HASWELL-NEXT: #APP 16360; HASWELL-NEXT: xchgl %edi, %eax # sched: [2:0.75] 16361; HASWELL-NEXT: xchgl %esi, %edi # sched: [2:0.75] 16362; HASWELL-NEXT: xchgl %edi, (%rdx) # sched: [9:1.00] 16363; HASWELL-NEXT: #NO_APP 16364; HASWELL-NEXT: retq # sched: [7:1.00] 16365; 16366; BROADWELL-LABEL: test_xchg_32: 16367; BROADWELL: # %bb.0: 16368; BROADWELL-NEXT: #APP 16369; BROADWELL-NEXT: xchgl %edi, %eax # sched: [2:0.75] 16370; BROADWELL-NEXT: xchgl %esi, %edi # sched: [2:0.75] 16371; BROADWELL-NEXT: xchgl %edi, (%rdx) # sched: [8:1.00] 16372; BROADWELL-NEXT: #NO_APP 16373; BROADWELL-NEXT: retq # sched: [7:1.00] 16374; 16375; SKYLAKE-LABEL: test_xchg_32: 16376; SKYLAKE: # %bb.0: 16377; SKYLAKE-NEXT: #APP 16378; SKYLAKE-NEXT: xchgl %edi, %eax # sched: [2:0.75] 16379; SKYLAKE-NEXT: xchgl %esi, %edi # sched: [2:0.75] 16380; SKYLAKE-NEXT: xchgl %edi, (%rdx) # sched: [10:1.25] 16381; SKYLAKE-NEXT: #NO_APP 16382; SKYLAKE-NEXT: retq # sched: [7:1.00] 16383; 16384; SKX-LABEL: test_xchg_32: 16385; SKX: # %bb.0: 16386; SKX-NEXT: #APP 16387; SKX-NEXT: xchgl %edi, %eax # sched: [2:0.75] 16388; SKX-NEXT: xchgl %esi, %edi # sched: [2:0.75] 16389; SKX-NEXT: xchgl %edi, (%rdx) # sched: [10:1.25] 16390; SKX-NEXT: #NO_APP 16391; SKX-NEXT: retq # sched: [7:1.00] 16392; 16393; BTVER2-LABEL: test_xchg_32: 16394; BTVER2: # %bb.0: 16395; BTVER2-NEXT: #APP 16396; BTVER2-NEXT: xchgl %edi, %eax # sched: [1:0.50] 16397; BTVER2-NEXT: xchgl %esi, %edi # sched: [1:0.50] 16398; BTVER2-NEXT: xchgl %edi, (%rdx) # sched: [4:1.00] 16399; BTVER2-NEXT: #NO_APP 16400; BTVER2-NEXT: retq # sched: [4:1.00] 16401; 16402; ZNVER1-LABEL: test_xchg_32: 16403; ZNVER1: # %bb.0: 16404; ZNVER1-NEXT: #APP 16405; ZNVER1-NEXT: xchgl %edi, %eax # sched: [1:0.50] 16406; ZNVER1-NEXT: xchgl %esi, %edi # sched: [1:0.50] 16407; ZNVER1-NEXT: xchgl %edi, (%rdx) # sched: [5:0.50] 16408; ZNVER1-NEXT: #NO_APP 16409; ZNVER1-NEXT: retq # sched: [1:0.50] 16410 tail call void asm "xchg %EAX, $0 \0A\09 xchg $1, $0 \0A\09 xchg $2, $0", "r,r,*m"(i32 %a0, i32 %a1, i32 *%a2) nounwind 16411 ret void 16412} 16413define void @test_xchg_64(i64 %a0, i64 %a1, i64 *%a2) optsize { 16414; GENERIC-LABEL: test_xchg_64: 16415; GENERIC: # %bb.0: 16416; GENERIC-NEXT: #APP 16417; GENERIC-NEXT: xchgq %rdi, %rax # sched: [2:1.00] 16418; GENERIC-NEXT: xchgq %rsi, %rdi # sched: [2:1.00] 16419; GENERIC-NEXT: xchgq %rdi, (%rdx) # sched: [6:1.00] 16420; GENERIC-NEXT: #NO_APP 16421; GENERIC-NEXT: retq # sched: [1:1.00] 16422; 16423; ATOM-LABEL: test_xchg_64: 16424; ATOM: # %bb.0: 16425; ATOM-NEXT: #APP 16426; ATOM-NEXT: xchgq %rdi, %rax # sched: [2:1.00] 16427; ATOM-NEXT: xchgq %rsi, %rdi # sched: [2:1.00] 16428; ATOM-NEXT: xchgq %rdi, (%rdx) # sched: [3:1.50] 16429; ATOM-NEXT: #NO_APP 16430; ATOM-NEXT: retq # sched: [79:39.50] 16431; 16432; SLM-LABEL: test_xchg_64: 16433; SLM: # %bb.0: 16434; SLM-NEXT: #APP 16435; SLM-NEXT: xchgq %rdi, %rax # sched: [1:0.50] 16436; SLM-NEXT: xchgq %rsi, %rdi # sched: [1:0.50] 16437; SLM-NEXT: xchgq %rdi, (%rdx) # sched: [4:2.00] 16438; SLM-NEXT: #NO_APP 16439; SLM-NEXT: retq # sched: [4:1.00] 16440; 16441; SANDY-LABEL: test_xchg_64: 16442; SANDY: # %bb.0: 16443; SANDY-NEXT: #APP 16444; SANDY-NEXT: xchgq %rdi, %rax # sched: [2:1.00] 16445; SANDY-NEXT: xchgq %rsi, %rdi # sched: [2:1.00] 16446; SANDY-NEXT: xchgq %rdi, (%rdx) # sched: [6:1.00] 16447; SANDY-NEXT: #NO_APP 16448; SANDY-NEXT: retq # sched: [1:1.00] 16449; 16450; HASWELL-LABEL: test_xchg_64: 16451; HASWELL: # %bb.0: 16452; HASWELL-NEXT: #APP 16453; HASWELL-NEXT: xchgq %rdi, %rax # sched: [2:0.75] 16454; HASWELL-NEXT: xchgq %rsi, %rdi # sched: [2:0.75] 16455; HASWELL-NEXT: xchgq %rdi, (%rdx) # sched: [9:1.00] 16456; HASWELL-NEXT: #NO_APP 16457; HASWELL-NEXT: retq # sched: [7:1.00] 16458; 16459; BROADWELL-LABEL: test_xchg_64: 16460; BROADWELL: # %bb.0: 16461; BROADWELL-NEXT: #APP 16462; BROADWELL-NEXT: xchgq %rdi, %rax # sched: [2:0.75] 16463; BROADWELL-NEXT: xchgq %rsi, %rdi # sched: [2:0.75] 16464; BROADWELL-NEXT: xchgq %rdi, (%rdx) # sched: [8:1.00] 16465; BROADWELL-NEXT: #NO_APP 16466; BROADWELL-NEXT: retq # sched: [7:1.00] 16467; 16468; SKYLAKE-LABEL: test_xchg_64: 16469; SKYLAKE: # %bb.0: 16470; SKYLAKE-NEXT: #APP 16471; SKYLAKE-NEXT: xchgq %rdi, %rax # sched: [2:0.75] 16472; SKYLAKE-NEXT: xchgq %rsi, %rdi # sched: [2:0.75] 16473; SKYLAKE-NEXT: xchgq %rdi, (%rdx) # sched: [10:1.25] 16474; SKYLAKE-NEXT: #NO_APP 16475; SKYLAKE-NEXT: retq # sched: [7:1.00] 16476; 16477; SKX-LABEL: test_xchg_64: 16478; SKX: # %bb.0: 16479; SKX-NEXT: #APP 16480; SKX-NEXT: xchgq %rdi, %rax # sched: [2:0.75] 16481; SKX-NEXT: xchgq %rsi, %rdi # sched: [2:0.75] 16482; SKX-NEXT: xchgq %rdi, (%rdx) # sched: [10:1.25] 16483; SKX-NEXT: #NO_APP 16484; SKX-NEXT: retq # sched: [7:1.00] 16485; 16486; BTVER2-LABEL: test_xchg_64: 16487; BTVER2: # %bb.0: 16488; BTVER2-NEXT: #APP 16489; BTVER2-NEXT: xchgq %rdi, %rax # sched: [1:0.50] 16490; BTVER2-NEXT: xchgq %rsi, %rdi # sched: [1:0.50] 16491; BTVER2-NEXT: xchgq %rdi, (%rdx) # sched: [4:1.00] 16492; BTVER2-NEXT: #NO_APP 16493; BTVER2-NEXT: retq # sched: [4:1.00] 16494; 16495; ZNVER1-LABEL: test_xchg_64: 16496; ZNVER1: # %bb.0: 16497; ZNVER1-NEXT: #APP 16498; ZNVER1-NEXT: xchgq %rdi, %rax # sched: [1:0.50] 16499; ZNVER1-NEXT: xchgq %rsi, %rdi # sched: [1:0.50] 16500; ZNVER1-NEXT: xchgq %rdi, (%rdx) # sched: [5:0.50] 16501; ZNVER1-NEXT: #NO_APP 16502; ZNVER1-NEXT: retq # sched: [1:0.50] 16503 tail call void asm "xchg %RAX, $0 \0A\09 xchg $1, $0 \0A\09 xchg $2, $0", "r,r,*m"(i64 %a0, i64 %a1, i64 *%a2) nounwind 16504 ret void 16505} 16506 16507define void @test_xlat() optsize { 16508; GENERIC-LABEL: test_xlat: 16509; GENERIC: # %bb.0: 16510; GENERIC-NEXT: #APP 16511; GENERIC-NEXT: xlatb # sched: [5:0.50] 16512; GENERIC-NEXT: #NO_APP 16513; GENERIC-NEXT: retq # sched: [1:1.00] 16514; 16515; ATOM-LABEL: test_xlat: 16516; ATOM: # %bb.0: 16517; ATOM-NEXT: #APP 16518; ATOM-NEXT: xlatb # sched: [6:3.00] 16519; ATOM-NEXT: #NO_APP 16520; ATOM-NEXT: retq # sched: [79:39.50] 16521; 16522; SLM-LABEL: test_xlat: 16523; SLM: # %bb.0: 16524; SLM-NEXT: #APP 16525; SLM-NEXT: xlatb # sched: [3:1.00] 16526; SLM-NEXT: #NO_APP 16527; SLM-NEXT: retq # sched: [4:1.00] 16528; 16529; SANDY-LABEL: test_xlat: 16530; SANDY: # %bb.0: 16531; SANDY-NEXT: #APP 16532; SANDY-NEXT: xlatb # sched: [5:0.50] 16533; SANDY-NEXT: #NO_APP 16534; SANDY-NEXT: retq # sched: [1:1.00] 16535; 16536; HASWELL-LABEL: test_xlat: 16537; HASWELL: # %bb.0: 16538; HASWELL-NEXT: #APP 16539; HASWELL-NEXT: xlatb # sched: [7:0.75] 16540; HASWELL-NEXT: #NO_APP 16541; HASWELL-NEXT: retq # sched: [7:1.00] 16542; 16543; BROADWELL-LABEL: test_xlat: 16544; BROADWELL: # %bb.0: 16545; BROADWELL-NEXT: #APP 16546; BROADWELL-NEXT: xlatb # sched: [5:0.50] 16547; BROADWELL-NEXT: #NO_APP 16548; BROADWELL-NEXT: retq # sched: [7:1.00] 16549; 16550; SKYLAKE-LABEL: test_xlat: 16551; SKYLAKE: # %bb.0: 16552; SKYLAKE-NEXT: #APP 16553; SKYLAKE-NEXT: xlatb # sched: [5:0.50] 16554; SKYLAKE-NEXT: #NO_APP 16555; SKYLAKE-NEXT: retq # sched: [7:1.00] 16556; 16557; SKX-LABEL: test_xlat: 16558; SKX: # %bb.0: 16559; SKX-NEXT: #APP 16560; SKX-NEXT: xlatb # sched: [5:0.50] 16561; SKX-NEXT: #NO_APP 16562; SKX-NEXT: retq # sched: [7:1.00] 16563; 16564; BTVER2-LABEL: test_xlat: 16565; BTVER2: # %bb.0: 16566; BTVER2-NEXT: #APP 16567; BTVER2-NEXT: xlatb # sched: [5:1.00] 16568; BTVER2-NEXT: #NO_APP 16569; BTVER2-NEXT: retq # sched: [4:1.00] 16570; 16571; ZNVER1-LABEL: test_xlat: 16572; ZNVER1: # %bb.0: 16573; ZNVER1-NEXT: #APP 16574; ZNVER1-NEXT: xlatb # sched: [100:0.25] 16575; ZNVER1-NEXT: #NO_APP 16576; ZNVER1-NEXT: retq # sched: [1:0.50] 16577 tail call void asm "xlat", ""() nounwind 16578 ret void 16579} 16580 16581define void @test_xor_8(i8 %a0, i8* %a1, i8 %a2) optsize { 16582; GENERIC-LABEL: test_xor_8: 16583; GENERIC: # %bb.0: 16584; GENERIC-NEXT: #APP 16585; GENERIC-NEXT: xorb $7, %al # sched: [1:0.33] 16586; GENERIC-NEXT: xorb $7, %dil # sched: [1:0.33] 16587; GENERIC-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16588; GENERIC-NEXT: xorb %dl, %dil # sched: [1:0.33] 16589; GENERIC-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16590; GENERIC-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16591; GENERIC-NEXT: #NO_APP 16592; GENERIC-NEXT: retq # sched: [1:1.00] 16593; 16594; ATOM-LABEL: test_xor_8: 16595; ATOM: # %bb.0: 16596; ATOM-NEXT: #APP 16597; ATOM-NEXT: xorb $7, %al # sched: [1:0.50] 16598; ATOM-NEXT: xorb $7, %dil # sched: [1:0.50] 16599; ATOM-NEXT: xorb $7, (%rsi) # sched: [1:1.00] 16600; ATOM-NEXT: xorb %dl, %dil # sched: [1:0.50] 16601; ATOM-NEXT: xorb %dil, (%rsi) # sched: [1:1.00] 16602; ATOM-NEXT: xorb (%rsi), %dil # sched: [1:1.00] 16603; ATOM-NEXT: #NO_APP 16604; ATOM-NEXT: retq # sched: [79:39.50] 16605; 16606; SLM-LABEL: test_xor_8: 16607; SLM: # %bb.0: 16608; SLM-NEXT: #APP 16609; SLM-NEXT: xorb $7, %al # sched: [1:0.50] 16610; SLM-NEXT: xorb $7, %dil # sched: [1:0.50] 16611; SLM-NEXT: xorb $7, (%rsi) # sched: [5:2.00] 16612; SLM-NEXT: xorb %dl, %dil # sched: [1:0.50] 16613; SLM-NEXT: xorb %dil, (%rsi) # sched: [5:2.00] 16614; SLM-NEXT: xorb (%rsi), %dil # sched: [4:1.00] 16615; SLM-NEXT: #NO_APP 16616; SLM-NEXT: retq # sched: [4:1.00] 16617; 16618; SANDY-LABEL: test_xor_8: 16619; SANDY: # %bb.0: 16620; SANDY-NEXT: #APP 16621; SANDY-NEXT: xorb $7, %al # sched: [1:0.33] 16622; SANDY-NEXT: xorb $7, %dil # sched: [1:0.33] 16623; SANDY-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16624; SANDY-NEXT: xorb %dl, %dil # sched: [1:0.33] 16625; SANDY-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16626; SANDY-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16627; SANDY-NEXT: #NO_APP 16628; SANDY-NEXT: retq # sched: [1:1.00] 16629; 16630; HASWELL-LABEL: test_xor_8: 16631; HASWELL: # %bb.0: 16632; HASWELL-NEXT: #APP 16633; HASWELL-NEXT: xorb $7, %al # sched: [1:0.25] 16634; HASWELL-NEXT: xorb $7, %dil # sched: [1:0.25] 16635; HASWELL-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16636; HASWELL-NEXT: xorb %dl, %dil # sched: [1:0.25] 16637; HASWELL-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16638; HASWELL-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16639; HASWELL-NEXT: #NO_APP 16640; HASWELL-NEXT: retq # sched: [7:1.00] 16641; 16642; BROADWELL-LABEL: test_xor_8: 16643; BROADWELL: # %bb.0: 16644; BROADWELL-NEXT: #APP 16645; BROADWELL-NEXT: xorb $7, %al # sched: [1:0.25] 16646; BROADWELL-NEXT: xorb $7, %dil # sched: [1:0.25] 16647; BROADWELL-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16648; BROADWELL-NEXT: xorb %dl, %dil # sched: [1:0.25] 16649; BROADWELL-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16650; BROADWELL-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16651; BROADWELL-NEXT: #NO_APP 16652; BROADWELL-NEXT: retq # sched: [7:1.00] 16653; 16654; SKYLAKE-LABEL: test_xor_8: 16655; SKYLAKE: # %bb.0: 16656; SKYLAKE-NEXT: #APP 16657; SKYLAKE-NEXT: xorb $7, %al # sched: [1:0.25] 16658; SKYLAKE-NEXT: xorb $7, %dil # sched: [1:0.25] 16659; SKYLAKE-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16660; SKYLAKE-NEXT: xorb %dl, %dil # sched: [1:0.25] 16661; SKYLAKE-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16662; SKYLAKE-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16663; SKYLAKE-NEXT: #NO_APP 16664; SKYLAKE-NEXT: retq # sched: [7:1.00] 16665; 16666; SKX-LABEL: test_xor_8: 16667; SKX: # %bb.0: 16668; SKX-NEXT: #APP 16669; SKX-NEXT: xorb $7, %al # sched: [1:0.25] 16670; SKX-NEXT: xorb $7, %dil # sched: [1:0.25] 16671; SKX-NEXT: xorb $7, (%rsi) # sched: [7:1.00] 16672; SKX-NEXT: xorb %dl, %dil # sched: [1:0.25] 16673; SKX-NEXT: xorb %dil, (%rsi) # sched: [7:1.00] 16674; SKX-NEXT: xorb (%rsi), %dil # sched: [6:0.50] 16675; SKX-NEXT: #NO_APP 16676; SKX-NEXT: retq # sched: [7:1.00] 16677; 16678; BTVER2-LABEL: test_xor_8: 16679; BTVER2: # %bb.0: 16680; BTVER2-NEXT: #APP 16681; BTVER2-NEXT: xorb $7, %al # sched: [1:0.50] 16682; BTVER2-NEXT: xorb $7, %dil # sched: [1:0.50] 16683; BTVER2-NEXT: xorb $7, (%rsi) # sched: [5:1.00] 16684; BTVER2-NEXT: xorb %dl, %dil # sched: [1:0.50] 16685; BTVER2-NEXT: xorb %dil, (%rsi) # sched: [5:1.00] 16686; BTVER2-NEXT: xorb (%rsi), %dil # sched: [4:1.00] 16687; BTVER2-NEXT: #NO_APP 16688; BTVER2-NEXT: retq # sched: [4:1.00] 16689; 16690; ZNVER1-LABEL: test_xor_8: 16691; ZNVER1: # %bb.0: 16692; ZNVER1-NEXT: #APP 16693; ZNVER1-NEXT: xorb $7, %al # sched: [1:0.25] 16694; ZNVER1-NEXT: xorb $7, %dil # sched: [1:0.25] 16695; ZNVER1-NEXT: xorb $7, (%rsi) # sched: [5:0.50] 16696; ZNVER1-NEXT: xorb %dl, %dil # sched: [1:0.25] 16697; ZNVER1-NEXT: xorb %dil, (%rsi) # sched: [5:0.50] 16698; ZNVER1-NEXT: xorb (%rsi), %dil # sched: [5:0.50] 16699; ZNVER1-NEXT: #NO_APP 16700; ZNVER1-NEXT: retq # sched: [1:0.50] 16701 tail call void asm "xorb $3, %AL \0A\09 xorb $3, $0 \0A\09 xorb $3, $2 \0A\09 xorb $1, $0 \0A\09 xorb $0, $2 \0A\09 xorb $2, $0", "r,r,*m,i"(i8 %a0, i8 %a2, i8* %a1, i8 7) nounwind 16702 ret void 16703} 16704define void @test_xor_16(i16 %a0, i16* %a1, i16 %a2) optsize { 16705; GENERIC-LABEL: test_xor_16: 16706; GENERIC: # %bb.0: 16707; GENERIC-NEXT: #APP 16708; GENERIC-NEXT: xorw $511, %ax # imm = 0x1FF 16709; GENERIC-NEXT: # sched: [1:0.33] 16710; GENERIC-NEXT: xorw $511, %di # imm = 0x1FF 16711; GENERIC-NEXT: # sched: [1:0.33] 16712; GENERIC-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16713; GENERIC-NEXT: # sched: [7:1.00] 16714; GENERIC-NEXT: xorw $7, %di # sched: [1:0.33] 16715; GENERIC-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16716; GENERIC-NEXT: xorw %dx, %di # sched: [1:0.33] 16717; GENERIC-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16718; GENERIC-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16719; GENERIC-NEXT: #NO_APP 16720; GENERIC-NEXT: retq # sched: [1:1.00] 16721; 16722; ATOM-LABEL: test_xor_16: 16723; ATOM: # %bb.0: 16724; ATOM-NEXT: #APP 16725; ATOM-NEXT: xorw $511, %ax # imm = 0x1FF 16726; ATOM-NEXT: # sched: [1:0.50] 16727; ATOM-NEXT: xorw $511, %di # imm = 0x1FF 16728; ATOM-NEXT: # sched: [1:0.50] 16729; ATOM-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16730; ATOM-NEXT: # sched: [1:1.00] 16731; ATOM-NEXT: xorw $7, %di # sched: [1:0.50] 16732; ATOM-NEXT: xorw $7, (%rsi) # sched: [1:1.00] 16733; ATOM-NEXT: xorw %dx, %di # sched: [1:0.50] 16734; ATOM-NEXT: xorw %di, (%rsi) # sched: [1:1.00] 16735; ATOM-NEXT: xorw (%rsi), %di # sched: [1:1.00] 16736; ATOM-NEXT: #NO_APP 16737; ATOM-NEXT: retq # sched: [79:39.50] 16738; 16739; SLM-LABEL: test_xor_16: 16740; SLM: # %bb.0: 16741; SLM-NEXT: #APP 16742; SLM-NEXT: xorw $511, %ax # imm = 0x1FF 16743; SLM-NEXT: # sched: [1:0.50] 16744; SLM-NEXT: xorw $511, %di # imm = 0x1FF 16745; SLM-NEXT: # sched: [1:0.50] 16746; SLM-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16747; SLM-NEXT: # sched: [5:2.00] 16748; SLM-NEXT: xorw $7, %di # sched: [1:0.50] 16749; SLM-NEXT: xorw $7, (%rsi) # sched: [5:2.00] 16750; SLM-NEXT: xorw %dx, %di # sched: [1:0.50] 16751; SLM-NEXT: xorw %di, (%rsi) # sched: [5:2.00] 16752; SLM-NEXT: xorw (%rsi), %di # sched: [4:1.00] 16753; SLM-NEXT: #NO_APP 16754; SLM-NEXT: retq # sched: [4:1.00] 16755; 16756; SANDY-LABEL: test_xor_16: 16757; SANDY: # %bb.0: 16758; SANDY-NEXT: #APP 16759; SANDY-NEXT: xorw $511, %ax # imm = 0x1FF 16760; SANDY-NEXT: # sched: [1:0.33] 16761; SANDY-NEXT: xorw $511, %di # imm = 0x1FF 16762; SANDY-NEXT: # sched: [1:0.33] 16763; SANDY-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16764; SANDY-NEXT: # sched: [7:1.00] 16765; SANDY-NEXT: xorw $7, %di # sched: [1:0.33] 16766; SANDY-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16767; SANDY-NEXT: xorw %dx, %di # sched: [1:0.33] 16768; SANDY-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16769; SANDY-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16770; SANDY-NEXT: #NO_APP 16771; SANDY-NEXT: retq # sched: [1:1.00] 16772; 16773; HASWELL-LABEL: test_xor_16: 16774; HASWELL: # %bb.0: 16775; HASWELL-NEXT: #APP 16776; HASWELL-NEXT: xorw $511, %ax # imm = 0x1FF 16777; HASWELL-NEXT: # sched: [1:0.25] 16778; HASWELL-NEXT: xorw $511, %di # imm = 0x1FF 16779; HASWELL-NEXT: # sched: [1:0.25] 16780; HASWELL-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16781; HASWELL-NEXT: # sched: [7:1.00] 16782; HASWELL-NEXT: xorw $7, %di # sched: [1:0.25] 16783; HASWELL-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16784; HASWELL-NEXT: xorw %dx, %di # sched: [1:0.25] 16785; HASWELL-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16786; HASWELL-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16787; HASWELL-NEXT: #NO_APP 16788; HASWELL-NEXT: retq # sched: [7:1.00] 16789; 16790; BROADWELL-LABEL: test_xor_16: 16791; BROADWELL: # %bb.0: 16792; BROADWELL-NEXT: #APP 16793; BROADWELL-NEXT: xorw $511, %ax # imm = 0x1FF 16794; BROADWELL-NEXT: # sched: [1:0.25] 16795; BROADWELL-NEXT: xorw $511, %di # imm = 0x1FF 16796; BROADWELL-NEXT: # sched: [1:0.25] 16797; BROADWELL-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16798; BROADWELL-NEXT: # sched: [7:1.00] 16799; BROADWELL-NEXT: xorw $7, %di # sched: [1:0.25] 16800; BROADWELL-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16801; BROADWELL-NEXT: xorw %dx, %di # sched: [1:0.25] 16802; BROADWELL-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16803; BROADWELL-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16804; BROADWELL-NEXT: #NO_APP 16805; BROADWELL-NEXT: retq # sched: [7:1.00] 16806; 16807; SKYLAKE-LABEL: test_xor_16: 16808; SKYLAKE: # %bb.0: 16809; SKYLAKE-NEXT: #APP 16810; SKYLAKE-NEXT: xorw $511, %ax # imm = 0x1FF 16811; SKYLAKE-NEXT: # sched: [1:0.25] 16812; SKYLAKE-NEXT: xorw $511, %di # imm = 0x1FF 16813; SKYLAKE-NEXT: # sched: [1:0.25] 16814; SKYLAKE-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16815; SKYLAKE-NEXT: # sched: [7:1.00] 16816; SKYLAKE-NEXT: xorw $7, %di # sched: [1:0.25] 16817; SKYLAKE-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16818; SKYLAKE-NEXT: xorw %dx, %di # sched: [1:0.25] 16819; SKYLAKE-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16820; SKYLAKE-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16821; SKYLAKE-NEXT: #NO_APP 16822; SKYLAKE-NEXT: retq # sched: [7:1.00] 16823; 16824; SKX-LABEL: test_xor_16: 16825; SKX: # %bb.0: 16826; SKX-NEXT: #APP 16827; SKX-NEXT: xorw $511, %ax # imm = 0x1FF 16828; SKX-NEXT: # sched: [1:0.25] 16829; SKX-NEXT: xorw $511, %di # imm = 0x1FF 16830; SKX-NEXT: # sched: [1:0.25] 16831; SKX-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16832; SKX-NEXT: # sched: [7:1.00] 16833; SKX-NEXT: xorw $7, %di # sched: [1:0.25] 16834; SKX-NEXT: xorw $7, (%rsi) # sched: [7:1.00] 16835; SKX-NEXT: xorw %dx, %di # sched: [1:0.25] 16836; SKX-NEXT: xorw %di, (%rsi) # sched: [7:1.00] 16837; SKX-NEXT: xorw (%rsi), %di # sched: [6:0.50] 16838; SKX-NEXT: #NO_APP 16839; SKX-NEXT: retq # sched: [7:1.00] 16840; 16841; BTVER2-LABEL: test_xor_16: 16842; BTVER2: # %bb.0: 16843; BTVER2-NEXT: #APP 16844; BTVER2-NEXT: xorw $511, %ax # imm = 0x1FF 16845; BTVER2-NEXT: # sched: [1:0.50] 16846; BTVER2-NEXT: xorw $511, %di # imm = 0x1FF 16847; BTVER2-NEXT: # sched: [1:0.50] 16848; BTVER2-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16849; BTVER2-NEXT: # sched: [5:1.00] 16850; BTVER2-NEXT: xorw $7, %di # sched: [1:0.50] 16851; BTVER2-NEXT: xorw $7, (%rsi) # sched: [5:1.00] 16852; BTVER2-NEXT: xorw %dx, %di # sched: [1:0.50] 16853; BTVER2-NEXT: xorw %di, (%rsi) # sched: [5:1.00] 16854; BTVER2-NEXT: xorw (%rsi), %di # sched: [4:1.00] 16855; BTVER2-NEXT: #NO_APP 16856; BTVER2-NEXT: retq # sched: [4:1.00] 16857; 16858; ZNVER1-LABEL: test_xor_16: 16859; ZNVER1: # %bb.0: 16860; ZNVER1-NEXT: #APP 16861; ZNVER1-NEXT: xorw $511, %ax # imm = 0x1FF 16862; ZNVER1-NEXT: # sched: [1:0.25] 16863; ZNVER1-NEXT: xorw $511, %di # imm = 0x1FF 16864; ZNVER1-NEXT: # sched: [1:0.25] 16865; ZNVER1-NEXT: xorw $511, (%rsi) # imm = 0x1FF 16866; ZNVER1-NEXT: # sched: [5:0.50] 16867; ZNVER1-NEXT: xorw $7, %di # sched: [1:0.25] 16868; ZNVER1-NEXT: xorw $7, (%rsi) # sched: [5:0.50] 16869; ZNVER1-NEXT: xorw %dx, %di # sched: [1:0.25] 16870; ZNVER1-NEXT: xorw %di, (%rsi) # sched: [5:0.50] 16871; ZNVER1-NEXT: xorw (%rsi), %di # sched: [5:0.50] 16872; ZNVER1-NEXT: #NO_APP 16873; ZNVER1-NEXT: retq # sched: [1:0.50] 16874 tail call void asm "xorw $3, %AX \0A\09 xorw $3, $0 \0A\09 xorw $3, $2 \0A\09 xorw $4, $0 \0A\09 xorw $4, $2 \0A\09 xorw $1, $0 \0A\09 xorw $0, $2 \0A\09 xorw $2, $0", "r,r,*m,i,i"(i16 %a0, i16 %a2, i16* %a1, i16 511, i8 7) nounwind 16875 ret void 16876} 16877define void @test_xor_32(i32 %a0, i32* %a1, i32 %a2) optsize { 16878; GENERIC-LABEL: test_xor_32: 16879; GENERIC: # %bb.0: 16880; GENERIC-NEXT: #APP 16881; GENERIC-NEXT: xorl $665536, %eax # imm = 0xA27C0 16882; GENERIC-NEXT: # sched: [1:0.33] 16883; GENERIC-NEXT: xorl $665536, %edi # imm = 0xA27C0 16884; GENERIC-NEXT: # sched: [1:0.33] 16885; GENERIC-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16886; GENERIC-NEXT: # sched: [7:1.00] 16887; GENERIC-NEXT: xorl $7, %edi # sched: [1:0.33] 16888; GENERIC-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16889; GENERIC-NEXT: xorl %edx, %edi # sched: [1:0.33] 16890; GENERIC-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16891; GENERIC-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16892; GENERIC-NEXT: #NO_APP 16893; GENERIC-NEXT: retq # sched: [1:1.00] 16894; 16895; ATOM-LABEL: test_xor_32: 16896; ATOM: # %bb.0: 16897; ATOM-NEXT: #APP 16898; ATOM-NEXT: xorl $665536, %eax # imm = 0xA27C0 16899; ATOM-NEXT: # sched: [1:0.50] 16900; ATOM-NEXT: xorl $665536, %edi # imm = 0xA27C0 16901; ATOM-NEXT: # sched: [1:0.50] 16902; ATOM-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16903; ATOM-NEXT: # sched: [1:1.00] 16904; ATOM-NEXT: xorl $7, %edi # sched: [1:0.50] 16905; ATOM-NEXT: xorl $7, (%rsi) # sched: [1:1.00] 16906; ATOM-NEXT: xorl %edx, %edi # sched: [1:0.50] 16907; ATOM-NEXT: xorl %edi, (%rsi) # sched: [1:1.00] 16908; ATOM-NEXT: xorl (%rsi), %edi # sched: [1:1.00] 16909; ATOM-NEXT: #NO_APP 16910; ATOM-NEXT: retq # sched: [79:39.50] 16911; 16912; SLM-LABEL: test_xor_32: 16913; SLM: # %bb.0: 16914; SLM-NEXT: #APP 16915; SLM-NEXT: xorl $665536, %eax # imm = 0xA27C0 16916; SLM-NEXT: # sched: [1:0.50] 16917; SLM-NEXT: xorl $665536, %edi # imm = 0xA27C0 16918; SLM-NEXT: # sched: [1:0.50] 16919; SLM-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16920; SLM-NEXT: # sched: [5:2.00] 16921; SLM-NEXT: xorl $7, %edi # sched: [1:0.50] 16922; SLM-NEXT: xorl $7, (%rsi) # sched: [5:2.00] 16923; SLM-NEXT: xorl %edx, %edi # sched: [1:0.50] 16924; SLM-NEXT: xorl %edi, (%rsi) # sched: [5:2.00] 16925; SLM-NEXT: xorl (%rsi), %edi # sched: [4:1.00] 16926; SLM-NEXT: #NO_APP 16927; SLM-NEXT: retq # sched: [4:1.00] 16928; 16929; SANDY-LABEL: test_xor_32: 16930; SANDY: # %bb.0: 16931; SANDY-NEXT: #APP 16932; SANDY-NEXT: xorl $665536, %eax # imm = 0xA27C0 16933; SANDY-NEXT: # sched: [1:0.33] 16934; SANDY-NEXT: xorl $665536, %edi # imm = 0xA27C0 16935; SANDY-NEXT: # sched: [1:0.33] 16936; SANDY-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16937; SANDY-NEXT: # sched: [7:1.00] 16938; SANDY-NEXT: xorl $7, %edi # sched: [1:0.33] 16939; SANDY-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16940; SANDY-NEXT: xorl %edx, %edi # sched: [1:0.33] 16941; SANDY-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16942; SANDY-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16943; SANDY-NEXT: #NO_APP 16944; SANDY-NEXT: retq # sched: [1:1.00] 16945; 16946; HASWELL-LABEL: test_xor_32: 16947; HASWELL: # %bb.0: 16948; HASWELL-NEXT: #APP 16949; HASWELL-NEXT: xorl $665536, %eax # imm = 0xA27C0 16950; HASWELL-NEXT: # sched: [1:0.25] 16951; HASWELL-NEXT: xorl $665536, %edi # imm = 0xA27C0 16952; HASWELL-NEXT: # sched: [1:0.25] 16953; HASWELL-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16954; HASWELL-NEXT: # sched: [7:1.00] 16955; HASWELL-NEXT: xorl $7, %edi # sched: [1:0.25] 16956; HASWELL-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16957; HASWELL-NEXT: xorl %edx, %edi # sched: [1:0.25] 16958; HASWELL-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16959; HASWELL-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16960; HASWELL-NEXT: #NO_APP 16961; HASWELL-NEXT: retq # sched: [7:1.00] 16962; 16963; BROADWELL-LABEL: test_xor_32: 16964; BROADWELL: # %bb.0: 16965; BROADWELL-NEXT: #APP 16966; BROADWELL-NEXT: xorl $665536, %eax # imm = 0xA27C0 16967; BROADWELL-NEXT: # sched: [1:0.25] 16968; BROADWELL-NEXT: xorl $665536, %edi # imm = 0xA27C0 16969; BROADWELL-NEXT: # sched: [1:0.25] 16970; BROADWELL-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16971; BROADWELL-NEXT: # sched: [7:1.00] 16972; BROADWELL-NEXT: xorl $7, %edi # sched: [1:0.25] 16973; BROADWELL-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16974; BROADWELL-NEXT: xorl %edx, %edi # sched: [1:0.25] 16975; BROADWELL-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16976; BROADWELL-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16977; BROADWELL-NEXT: #NO_APP 16978; BROADWELL-NEXT: retq # sched: [7:1.00] 16979; 16980; SKYLAKE-LABEL: test_xor_32: 16981; SKYLAKE: # %bb.0: 16982; SKYLAKE-NEXT: #APP 16983; SKYLAKE-NEXT: xorl $665536, %eax # imm = 0xA27C0 16984; SKYLAKE-NEXT: # sched: [1:0.25] 16985; SKYLAKE-NEXT: xorl $665536, %edi # imm = 0xA27C0 16986; SKYLAKE-NEXT: # sched: [1:0.25] 16987; SKYLAKE-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 16988; SKYLAKE-NEXT: # sched: [7:1.00] 16989; SKYLAKE-NEXT: xorl $7, %edi # sched: [1:0.25] 16990; SKYLAKE-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 16991; SKYLAKE-NEXT: xorl %edx, %edi # sched: [1:0.25] 16992; SKYLAKE-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 16993; SKYLAKE-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 16994; SKYLAKE-NEXT: #NO_APP 16995; SKYLAKE-NEXT: retq # sched: [7:1.00] 16996; 16997; SKX-LABEL: test_xor_32: 16998; SKX: # %bb.0: 16999; SKX-NEXT: #APP 17000; SKX-NEXT: xorl $665536, %eax # imm = 0xA27C0 17001; SKX-NEXT: # sched: [1:0.25] 17002; SKX-NEXT: xorl $665536, %edi # imm = 0xA27C0 17003; SKX-NEXT: # sched: [1:0.25] 17004; SKX-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 17005; SKX-NEXT: # sched: [7:1.00] 17006; SKX-NEXT: xorl $7, %edi # sched: [1:0.25] 17007; SKX-NEXT: xorl $7, (%rsi) # sched: [7:1.00] 17008; SKX-NEXT: xorl %edx, %edi # sched: [1:0.25] 17009; SKX-NEXT: xorl %edi, (%rsi) # sched: [7:1.00] 17010; SKX-NEXT: xorl (%rsi), %edi # sched: [6:0.50] 17011; SKX-NEXT: #NO_APP 17012; SKX-NEXT: retq # sched: [7:1.00] 17013; 17014; BTVER2-LABEL: test_xor_32: 17015; BTVER2: # %bb.0: 17016; BTVER2-NEXT: #APP 17017; BTVER2-NEXT: xorl $665536, %eax # imm = 0xA27C0 17018; BTVER2-NEXT: # sched: [1:0.50] 17019; BTVER2-NEXT: xorl $665536, %edi # imm = 0xA27C0 17020; BTVER2-NEXT: # sched: [1:0.50] 17021; BTVER2-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 17022; BTVER2-NEXT: # sched: [5:1.00] 17023; BTVER2-NEXT: xorl $7, %edi # sched: [1:0.50] 17024; BTVER2-NEXT: xorl $7, (%rsi) # sched: [5:1.00] 17025; BTVER2-NEXT: xorl %edx, %edi # sched: [1:0.50] 17026; BTVER2-NEXT: xorl %edi, (%rsi) # sched: [5:1.00] 17027; BTVER2-NEXT: xorl (%rsi), %edi # sched: [4:1.00] 17028; BTVER2-NEXT: #NO_APP 17029; BTVER2-NEXT: retq # sched: [4:1.00] 17030; 17031; ZNVER1-LABEL: test_xor_32: 17032; ZNVER1: # %bb.0: 17033; ZNVER1-NEXT: #APP 17034; ZNVER1-NEXT: xorl $665536, %eax # imm = 0xA27C0 17035; ZNVER1-NEXT: # sched: [1:0.25] 17036; ZNVER1-NEXT: xorl $665536, %edi # imm = 0xA27C0 17037; ZNVER1-NEXT: # sched: [1:0.25] 17038; ZNVER1-NEXT: xorl $665536, (%rsi) # imm = 0xA27C0 17039; ZNVER1-NEXT: # sched: [5:0.50] 17040; ZNVER1-NEXT: xorl $7, %edi # sched: [1:0.25] 17041; ZNVER1-NEXT: xorl $7, (%rsi) # sched: [5:0.50] 17042; ZNVER1-NEXT: xorl %edx, %edi # sched: [1:0.25] 17043; ZNVER1-NEXT: xorl %edi, (%rsi) # sched: [5:0.50] 17044; ZNVER1-NEXT: xorl (%rsi), %edi # sched: [5:0.50] 17045; ZNVER1-NEXT: #NO_APP 17046; ZNVER1-NEXT: retq # sched: [1:0.50] 17047 tail call void asm "xorl $3, %EAX \0A\09 xorl $3, $0 \0A\09 xorl $3, $2 \0A\09 xorl $4, $0 \0A\09 xorl $4, $2 \0A\09 xorl $1, $0 \0A\09 xorl $0, $2 \0A\09 xorl $2, $0", "r,r,*m,i,i"(i32 %a0, i32 %a2, i32* %a1, i32 665536, i8 7) nounwind 17048 ret void 17049} 17050define void @test_xor_64(i64 %a0, i64* %a1, i64 %a2) optsize { 17051; GENERIC-LABEL: test_xor_64: 17052; GENERIC: # %bb.0: 17053; GENERIC-NEXT: #APP 17054; GENERIC-NEXT: xorq $665536, %rax # imm = 0xA27C0 17055; GENERIC-NEXT: # sched: [1:0.33] 17056; GENERIC-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17057; GENERIC-NEXT: # sched: [1:0.33] 17058; GENERIC-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17059; GENERIC-NEXT: # sched: [7:1.00] 17060; GENERIC-NEXT: xorq $7, %rdi # sched: [1:0.33] 17061; GENERIC-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17062; GENERIC-NEXT: xorq %rdx, %rdi # sched: [1:0.33] 17063; GENERIC-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17064; GENERIC-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17065; GENERIC-NEXT: #NO_APP 17066; GENERIC-NEXT: retq # sched: [1:1.00] 17067; 17068; ATOM-LABEL: test_xor_64: 17069; ATOM: # %bb.0: 17070; ATOM-NEXT: #APP 17071; ATOM-NEXT: xorq $665536, %rax # imm = 0xA27C0 17072; ATOM-NEXT: # sched: [1:0.50] 17073; ATOM-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17074; ATOM-NEXT: # sched: [1:0.50] 17075; ATOM-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17076; ATOM-NEXT: # sched: [1:1.00] 17077; ATOM-NEXT: xorq $7, %rdi # sched: [1:0.50] 17078; ATOM-NEXT: xorq $7, (%rsi) # sched: [1:1.00] 17079; ATOM-NEXT: xorq %rdx, %rdi # sched: [1:0.50] 17080; ATOM-NEXT: xorq %rdi, (%rsi) # sched: [1:1.00] 17081; ATOM-NEXT: xorq (%rsi), %rdi # sched: [1:1.00] 17082; ATOM-NEXT: #NO_APP 17083; ATOM-NEXT: retq # sched: [79:39.50] 17084; 17085; SLM-LABEL: test_xor_64: 17086; SLM: # %bb.0: 17087; SLM-NEXT: #APP 17088; SLM-NEXT: xorq $665536, %rax # imm = 0xA27C0 17089; SLM-NEXT: # sched: [1:0.50] 17090; SLM-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17091; SLM-NEXT: # sched: [1:0.50] 17092; SLM-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17093; SLM-NEXT: # sched: [5:2.00] 17094; SLM-NEXT: xorq $7, %rdi # sched: [1:0.50] 17095; SLM-NEXT: xorq $7, (%rsi) # sched: [5:2.00] 17096; SLM-NEXT: xorq %rdx, %rdi # sched: [1:0.50] 17097; SLM-NEXT: xorq %rdi, (%rsi) # sched: [5:2.00] 17098; SLM-NEXT: xorq (%rsi), %rdi # sched: [4:1.00] 17099; SLM-NEXT: #NO_APP 17100; SLM-NEXT: retq # sched: [4:1.00] 17101; 17102; SANDY-LABEL: test_xor_64: 17103; SANDY: # %bb.0: 17104; SANDY-NEXT: #APP 17105; SANDY-NEXT: xorq $665536, %rax # imm = 0xA27C0 17106; SANDY-NEXT: # sched: [1:0.33] 17107; SANDY-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17108; SANDY-NEXT: # sched: [1:0.33] 17109; SANDY-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17110; SANDY-NEXT: # sched: [7:1.00] 17111; SANDY-NEXT: xorq $7, %rdi # sched: [1:0.33] 17112; SANDY-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17113; SANDY-NEXT: xorq %rdx, %rdi # sched: [1:0.33] 17114; SANDY-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17115; SANDY-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17116; SANDY-NEXT: #NO_APP 17117; SANDY-NEXT: retq # sched: [1:1.00] 17118; 17119; HASWELL-LABEL: test_xor_64: 17120; HASWELL: # %bb.0: 17121; HASWELL-NEXT: #APP 17122; HASWELL-NEXT: xorq $665536, %rax # imm = 0xA27C0 17123; HASWELL-NEXT: # sched: [1:0.25] 17124; HASWELL-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17125; HASWELL-NEXT: # sched: [1:0.25] 17126; HASWELL-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17127; HASWELL-NEXT: # sched: [7:1.00] 17128; HASWELL-NEXT: xorq $7, %rdi # sched: [1:0.25] 17129; HASWELL-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17130; HASWELL-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17131; HASWELL-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17132; HASWELL-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17133; HASWELL-NEXT: #NO_APP 17134; HASWELL-NEXT: retq # sched: [7:1.00] 17135; 17136; BROADWELL-LABEL: test_xor_64: 17137; BROADWELL: # %bb.0: 17138; BROADWELL-NEXT: #APP 17139; BROADWELL-NEXT: xorq $665536, %rax # imm = 0xA27C0 17140; BROADWELL-NEXT: # sched: [1:0.25] 17141; BROADWELL-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17142; BROADWELL-NEXT: # sched: [1:0.25] 17143; BROADWELL-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17144; BROADWELL-NEXT: # sched: [7:1.00] 17145; BROADWELL-NEXT: xorq $7, %rdi # sched: [1:0.25] 17146; BROADWELL-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17147; BROADWELL-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17148; BROADWELL-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17149; BROADWELL-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17150; BROADWELL-NEXT: #NO_APP 17151; BROADWELL-NEXT: retq # sched: [7:1.00] 17152; 17153; SKYLAKE-LABEL: test_xor_64: 17154; SKYLAKE: # %bb.0: 17155; SKYLAKE-NEXT: #APP 17156; SKYLAKE-NEXT: xorq $665536, %rax # imm = 0xA27C0 17157; SKYLAKE-NEXT: # sched: [1:0.25] 17158; SKYLAKE-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17159; SKYLAKE-NEXT: # sched: [1:0.25] 17160; SKYLAKE-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17161; SKYLAKE-NEXT: # sched: [7:1.00] 17162; SKYLAKE-NEXT: xorq $7, %rdi # sched: [1:0.25] 17163; SKYLAKE-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17164; SKYLAKE-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17165; SKYLAKE-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17166; SKYLAKE-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17167; SKYLAKE-NEXT: #NO_APP 17168; SKYLAKE-NEXT: retq # sched: [7:1.00] 17169; 17170; SKX-LABEL: test_xor_64: 17171; SKX: # %bb.0: 17172; SKX-NEXT: #APP 17173; SKX-NEXT: xorq $665536, %rax # imm = 0xA27C0 17174; SKX-NEXT: # sched: [1:0.25] 17175; SKX-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17176; SKX-NEXT: # sched: [1:0.25] 17177; SKX-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17178; SKX-NEXT: # sched: [7:1.00] 17179; SKX-NEXT: xorq $7, %rdi # sched: [1:0.25] 17180; SKX-NEXT: xorq $7, (%rsi) # sched: [7:1.00] 17181; SKX-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17182; SKX-NEXT: xorq %rdi, (%rsi) # sched: [7:1.00] 17183; SKX-NEXT: xorq (%rsi), %rdi # sched: [6:0.50] 17184; SKX-NEXT: #NO_APP 17185; SKX-NEXT: retq # sched: [7:1.00] 17186; 17187; BTVER2-LABEL: test_xor_64: 17188; BTVER2: # %bb.0: 17189; BTVER2-NEXT: #APP 17190; BTVER2-NEXT: xorq $665536, %rax # imm = 0xA27C0 17191; BTVER2-NEXT: # sched: [1:0.50] 17192; BTVER2-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17193; BTVER2-NEXT: # sched: [1:0.50] 17194; BTVER2-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17195; BTVER2-NEXT: # sched: [5:1.00] 17196; BTVER2-NEXT: xorq $7, %rdi # sched: [1:0.50] 17197; BTVER2-NEXT: xorq $7, (%rsi) # sched: [5:1.00] 17198; BTVER2-NEXT: xorq %rdx, %rdi # sched: [1:0.50] 17199; BTVER2-NEXT: xorq %rdi, (%rsi) # sched: [5:1.00] 17200; BTVER2-NEXT: xorq (%rsi), %rdi # sched: [4:1.00] 17201; BTVER2-NEXT: #NO_APP 17202; BTVER2-NEXT: retq # sched: [4:1.00] 17203; 17204; ZNVER1-LABEL: test_xor_64: 17205; ZNVER1: # %bb.0: 17206; ZNVER1-NEXT: #APP 17207; ZNVER1-NEXT: xorq $665536, %rax # imm = 0xA27C0 17208; ZNVER1-NEXT: # sched: [1:0.25] 17209; ZNVER1-NEXT: xorq $665536, %rdi # imm = 0xA27C0 17210; ZNVER1-NEXT: # sched: [1:0.25] 17211; ZNVER1-NEXT: xorq $665536, (%rsi) # imm = 0xA27C0 17212; ZNVER1-NEXT: # sched: [5:0.50] 17213; ZNVER1-NEXT: xorq $7, %rdi # sched: [1:0.25] 17214; ZNVER1-NEXT: xorq $7, (%rsi) # sched: [5:0.50] 17215; ZNVER1-NEXT: xorq %rdx, %rdi # sched: [1:0.25] 17216; ZNVER1-NEXT: xorq %rdi, (%rsi) # sched: [5:0.50] 17217; ZNVER1-NEXT: xorq (%rsi), %rdi # sched: [5:0.50] 17218; ZNVER1-NEXT: #NO_APP 17219; ZNVER1-NEXT: retq # sched: [1:0.50] 17220 tail call void asm "xorq $3, %RAX \0A\09 xorq $3, $0 \0A\09 xorq $3, $2 \0A\09 xorq $4, $0 \0A\09 xorq $4, $2 \0A\09 xorq $1, $0 \0A\09 xorq $0, $2 \0A\09 xorq $2, $0", "r,r,*m,i,i"(i64 %a0, i64 %a2, i64* %a1, i32 665536, i8 7) nounwind 17221 ret void 17222} 17223