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 -mattr=+xop | FileCheck %s --check-prefix=GENERIC 3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver1 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER1 4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER2 5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver3 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER3 6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver4 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER4 7 8define void @test_vfrczpd(<2 x double> %a0, <4 x double> %a1, <2 x double> *%a2, <4 x double> *%a3) { 9; GENERIC-LABEL: test_vfrczpd: 10; GENERIC: # %bb.0: 11; GENERIC-NEXT: #APP 12; GENERIC-NEXT: vfrczpd %xmm0, %xmm0 # sched: [3:1.00] 13; GENERIC-NEXT: vfrczpd %ymm1, %ymm1 # sched: [3:1.00] 14; GENERIC-NEXT: vfrczpd (%rdi), %xmm0 # sched: [9:1.00] 15; GENERIC-NEXT: vfrczpd (%rsi), %ymm1 # sched: [10:1.00] 16; GENERIC-NEXT: #NO_APP 17; GENERIC-NEXT: vzeroupper # sched: [100:0.33] 18; GENERIC-NEXT: retq # sched: [1:1.00] 19; 20; BDVER-LABEL: test_vfrczpd: 21; BDVER: # %bb.0: 22; BDVER-NEXT: #APP 23; BDVER-NEXT: vfrczpd %xmm0, %xmm0 24; BDVER-NEXT: vfrczpd %ymm1, %ymm1 25; BDVER-NEXT: vfrczpd (%rdi), %xmm0 26; BDVER-NEXT: vfrczpd (%rsi), %ymm1 27; BDVER-NEXT: #NO_APP 28; BDVER-NEXT: vzeroupper 29; BDVER-NEXT: retq 30 call void asm sideeffect "vfrczpd $0, $0 \0a\09 vfrczpd $1, $1 \0a\09 vfrczpd $2, $0 \0a\09 vfrczpd $3, $1", "x,x,*m,*m"(<2 x double> %a0, <4 x double> %a1, <2 x double> *%a2, <4 x double> *%a3) 31 ret void 32} 33 34define void @test_vfrczps(<4 x float> %a0, <4 x double> %a1, <4 x float> *%a2, <4 x double> *%a3) { 35; GENERIC-LABEL: test_vfrczps: 36; GENERIC: # %bb.0: 37; GENERIC-NEXT: #APP 38; GENERIC-NEXT: vfrczps %xmm0, %xmm0 # sched: [3:1.00] 39; GENERIC-NEXT: vfrczps %ymm1, %ymm1 # sched: [3:1.00] 40; GENERIC-NEXT: vfrczps (%rdi), %xmm0 # sched: [9:1.00] 41; GENERIC-NEXT: vfrczps (%rsi), %ymm1 # sched: [10:1.00] 42; GENERIC-NEXT: #NO_APP 43; GENERIC-NEXT: vzeroupper # sched: [100:0.33] 44; GENERIC-NEXT: retq # sched: [1:1.00] 45; 46; BDVER-LABEL: test_vfrczps: 47; BDVER: # %bb.0: 48; BDVER-NEXT: #APP 49; BDVER-NEXT: vfrczps %xmm0, %xmm0 50; BDVER-NEXT: vfrczps %ymm1, %ymm1 51; BDVER-NEXT: vfrczps (%rdi), %xmm0 52; BDVER-NEXT: vfrczps (%rsi), %ymm1 53; BDVER-NEXT: #NO_APP 54; BDVER-NEXT: vzeroupper 55; BDVER-NEXT: retq 56 call void asm sideeffect "vfrczps $0, $0 \0a\09 vfrczps $1, $1 \0a\09 vfrczps $2, $0 \0a\09 vfrczps $3, $1", "x,x,*m,*m"(<4 x float> %a0, <4 x double> %a1, <4 x float> *%a2, <4 x double> *%a3) 57 ret void 58} 59 60define void @test_vfrczsd(<2 x double> %a0, <2 x double> *%a1) { 61; GENERIC-LABEL: test_vfrczsd: 62; GENERIC: # %bb.0: 63; GENERIC-NEXT: #APP 64; GENERIC-NEXT: vfrczsd %xmm0, %xmm0 # sched: [3:1.00] 65; GENERIC-NEXT: vfrczsd (%rdi), %xmm0 # sched: [9:1.00] 66; GENERIC-NEXT: #NO_APP 67; GENERIC-NEXT: retq # sched: [1:1.00] 68; 69; BDVER-LABEL: test_vfrczsd: 70; BDVER: # %bb.0: 71; BDVER-NEXT: #APP 72; BDVER-NEXT: vfrczsd %xmm0, %xmm0 73; BDVER-NEXT: vfrczsd (%rdi), %xmm0 74; BDVER-NEXT: #NO_APP 75; BDVER-NEXT: retq 76 call void asm sideeffect "vfrczsd $0, $0 \0a\09 vfrczsd $1, $0", "x,*m"(<2 x double> %a0, <2 x double> *%a1) 77 ret void 78} 79 80define void @test_vfrczss(<4 x float> %a0, <4 x double> *%a1) { 81; GENERIC-LABEL: test_vfrczss: 82; GENERIC: # %bb.0: 83; GENERIC-NEXT: #APP 84; GENERIC-NEXT: vfrczss %xmm0, %xmm0 # sched: [3:1.00] 85; GENERIC-NEXT: vfrczss (%rdi), %xmm0 # sched: [9:1.00] 86; GENERIC-NEXT: #NO_APP 87; GENERIC-NEXT: retq # sched: [1:1.00] 88; 89; BDVER-LABEL: test_vfrczss: 90; BDVER: # %bb.0: 91; BDVER-NEXT: #APP 92; BDVER-NEXT: vfrczss %xmm0, %xmm0 93; BDVER-NEXT: vfrczss (%rdi), %xmm0 94; BDVER-NEXT: #NO_APP 95; BDVER-NEXT: retq 96 call void asm sideeffect "vfrczss $0, $0 \0a\09 vfrczss $1, $0", "x,*m"(<4 x float> %a0, <4 x double> *%a1) 97 ret void 98} 99 100define void @test_vpcmov_128(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 101; GENERIC-LABEL: test_vpcmov_128: 102; GENERIC: # %bb.0: 103; GENERIC-NEXT: #APP 104; GENERIC-NEXT: vpcmov %xmm2, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 105; GENERIC-NEXT: vpcmov (%rdi), %xmm1, %xmm0, %xmm0 # sched: [7:0.50] 106; GENERIC-NEXT: vpcmov %xmm2, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 107; GENERIC-NEXT: #NO_APP 108; GENERIC-NEXT: retq # sched: [1:1.00] 109; 110; BDVER-LABEL: test_vpcmov_128: 111; BDVER: # %bb.0: 112; BDVER-NEXT: #APP 113; BDVER-NEXT: vpcmov %xmm2, %xmm1, %xmm0, %xmm0 114; BDVER-NEXT: vpcmov (%rdi), %xmm1, %xmm0, %xmm0 115; BDVER-NEXT: vpcmov %xmm2, (%rdi), %xmm0, %xmm0 116; BDVER-NEXT: #NO_APP 117; BDVER-NEXT: retq 118 call void asm sideeffect "vpcmov $2, $1, $0, $0 \0a\09 vpcmov $3, $1, $0, $0 \0a\09 vpcmov $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 119 ret void 120} 121 122define void @test_vpcmov_256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2, <4 x i64> *%a3) { 123; GENERIC-LABEL: test_vpcmov_256: 124; GENERIC: # %bb.0: 125; GENERIC-NEXT: #APP 126; GENERIC-NEXT: vpcmov %ymm2, %ymm1, %ymm0, %ymm0 # sched: [1:1.00] 127; GENERIC-NEXT: vpcmov (%rdi), %ymm1, %ymm0, %ymm0 # sched: [8:1.00] 128; GENERIC-NEXT: vpcmov %ymm2, (%rdi), %ymm0, %ymm0 # sched: [8:1.00] 129; GENERIC-NEXT: #NO_APP 130; GENERIC-NEXT: vzeroupper # sched: [100:0.33] 131; GENERIC-NEXT: retq # sched: [1:1.00] 132; 133; BDVER-LABEL: test_vpcmov_256: 134; BDVER: # %bb.0: 135; BDVER-NEXT: #APP 136; BDVER-NEXT: vpcmov %ymm2, %ymm1, %ymm0, %ymm0 137; BDVER-NEXT: vpcmov (%rdi), %ymm1, %ymm0, %ymm0 138; BDVER-NEXT: vpcmov %ymm2, (%rdi), %ymm0, %ymm0 139; BDVER-NEXT: #NO_APP 140; BDVER-NEXT: vzeroupper 141; BDVER-NEXT: retq 142 call void asm sideeffect "vpcmov $2, $1, $0, $0 \0a\09 vpcmov $3, $1, $0, $0 \0a\09 vpcmov $2, $3, $0, $0", "x,x,x,*m"(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2, <4 x i64> *%a3) 143 ret void 144} 145 146define void @test_vpcom(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) { 147; GENERIC-LABEL: test_vpcom: 148; GENERIC: # %bb.0: 149; GENERIC-NEXT: #APP 150; GENERIC-NEXT: vpcomb $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 151; GENERIC-NEXT: vpcomd $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 152; GENERIC-NEXT: vpcomq $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 153; GENERIC-NEXT: vpcomw $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 154; GENERIC-NEXT: vpcomb $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 155; GENERIC-NEXT: vpcomd $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 156; GENERIC-NEXT: vpcomq $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 157; GENERIC-NEXT: vpcomw $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 158; GENERIC-NEXT: #NO_APP 159; GENERIC-NEXT: retq # sched: [1:1.00] 160; 161; BDVER-LABEL: test_vpcom: 162; BDVER: # %bb.0: 163; BDVER-NEXT: #APP 164; BDVER-NEXT: vpcomb $3, %xmm1, %xmm0, %xmm0 165; BDVER-NEXT: vpcomd $3, %xmm1, %xmm0, %xmm0 166; BDVER-NEXT: vpcomq $3, %xmm1, %xmm0, %xmm0 167; BDVER-NEXT: vpcomw $3, %xmm1, %xmm0, %xmm0 168; BDVER-NEXT: vpcomb $3, (%rdi), %xmm0, %xmm0 169; BDVER-NEXT: vpcomd $3, (%rdi), %xmm0, %xmm0 170; BDVER-NEXT: vpcomq $3, (%rdi), %xmm0, %xmm0 171; BDVER-NEXT: vpcomw $3, (%rdi), %xmm0, %xmm0 172; BDVER-NEXT: #NO_APP 173; BDVER-NEXT: retq 174 call void asm sideeffect "vpcomb $3, $1, $0, $0 \0a\09 vpcomd $3, $1, $0, $0 \0a\09 vpcomq $3, $1, $0, $0 \0a\09 vpcomw $3, $1, $0, $0 \0a\09 vpcomb $3, $2, $0, $0 \0a\09 vpcomd $3, $2, $0, $0 \0a\09 vpcomq $3, $2, $0, $0 \0a\09 vpcomw $3, $2, $0, $0", "x,x,*m,i"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2, i8 3) 175 ret void 176} 177 178define void @test_vpcomu(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) { 179; GENERIC-LABEL: test_vpcomu: 180; GENERIC: # %bb.0: 181; GENERIC-NEXT: #APP 182; GENERIC-NEXT: vpcomub $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 183; GENERIC-NEXT: vpcomud $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 184; GENERIC-NEXT: vpcomuq $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 185; GENERIC-NEXT: vpcomuw $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 186; GENERIC-NEXT: vpcomub $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 187; GENERIC-NEXT: vpcomud $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 188; GENERIC-NEXT: vpcomuq $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 189; GENERIC-NEXT: vpcomuw $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 190; GENERIC-NEXT: #NO_APP 191; GENERIC-NEXT: retq # sched: [1:1.00] 192; 193; BDVER-LABEL: test_vpcomu: 194; BDVER: # %bb.0: 195; BDVER-NEXT: #APP 196; BDVER-NEXT: vpcomub $3, %xmm1, %xmm0, %xmm0 197; BDVER-NEXT: vpcomud $3, %xmm1, %xmm0, %xmm0 198; BDVER-NEXT: vpcomuq $3, %xmm1, %xmm0, %xmm0 199; BDVER-NEXT: vpcomuw $3, %xmm1, %xmm0, %xmm0 200; BDVER-NEXT: vpcomub $3, (%rdi), %xmm0, %xmm0 201; BDVER-NEXT: vpcomud $3, (%rdi), %xmm0, %xmm0 202; BDVER-NEXT: vpcomuq $3, (%rdi), %xmm0, %xmm0 203; BDVER-NEXT: vpcomuw $3, (%rdi), %xmm0, %xmm0 204; BDVER-NEXT: #NO_APP 205; BDVER-NEXT: retq 206 call void asm sideeffect "vpcomub $3, $1, $0, $0 \0a\09 vpcomud $3, $1, $0, $0 \0a\09 vpcomuq $3, $1, $0, $0 \0a\09 vpcomuw $3, $1, $0, $0 \0a\09 vpcomub $3, $2, $0, $0 \0a\09 vpcomud $3, $2, $0, $0 \0a\09 vpcomuq $3, $2, $0, $0 \0a\09 vpcomuw $3, $2, $0, $0", "x,x,*m,i"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2, i8 3) 207 ret void 208} 209 210define void @test_vpermil2pd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) { 211; GENERIC-LABEL: test_vpermil2pd_128: 212; GENERIC: # %bb.0: 213; GENERIC-NEXT: #APP 214; GENERIC-NEXT: vpermil2pd $3, %xmm2, %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 215; GENERIC-NEXT: vpermil2pd $3, %xmm2, (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 216; GENERIC-NEXT: vpermil2pd $3, (%rdi), %xmm1, %xmm0, %xmm0 # sched: [7:1.00] 217; GENERIC-NEXT: #NO_APP 218; GENERIC-NEXT: retq # sched: [1:1.00] 219; 220; BDVER-LABEL: test_vpermil2pd_128: 221; BDVER: # %bb.0: 222; BDVER-NEXT: #APP 223; BDVER-NEXT: vpermil2pd $3, %xmm2, %xmm1, %xmm0, %xmm0 224; BDVER-NEXT: vpermil2pd $3, %xmm2, (%rdi), %xmm0, %xmm0 225; BDVER-NEXT: vpermil2pd $3, (%rdi), %xmm1, %xmm0, %xmm0 226; BDVER-NEXT: #NO_APP 227; BDVER-NEXT: retq 228 call void asm sideeffect "vpermil2pd $4, $2, $1, $0, $0 \0a\09 vpermil2pd $4, $2, $3, $0, $0 \0a\09 vpermil2pd $4, $3, $1, $0, $0", "x,x,x,*m,i"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3, i8 3) 229 ret void 230} 231 232define void @test_vpermil2pd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) { 233; GENERIC-LABEL: test_vpermil2pd_256: 234; GENERIC: # %bb.0: 235; GENERIC-NEXT: #APP 236; GENERIC-NEXT: vpermil2pd $3, %ymm2, %ymm1, %ymm0, %ymm0 # sched: [1:1.00] 237; GENERIC-NEXT: vpermil2pd $3, %ymm2, (%rdi), %ymm0, %ymm0 # sched: [8:1.00] 238; GENERIC-NEXT: vpermil2pd $3, (%rdi), %ymm1, %ymm0, %ymm0 # sched: [8:1.00] 239; GENERIC-NEXT: #NO_APP 240; GENERIC-NEXT: vzeroupper # sched: [100:0.33] 241; GENERIC-NEXT: retq # sched: [1:1.00] 242; 243; BDVER-LABEL: test_vpermil2pd_256: 244; BDVER: # %bb.0: 245; BDVER-NEXT: #APP 246; BDVER-NEXT: vpermil2pd $3, %ymm2, %ymm1, %ymm0, %ymm0 247; BDVER-NEXT: vpermil2pd $3, %ymm2, (%rdi), %ymm0, %ymm0 248; BDVER-NEXT: vpermil2pd $3, (%rdi), %ymm1, %ymm0, %ymm0 249; BDVER-NEXT: #NO_APP 250; BDVER-NEXT: vzeroupper 251; BDVER-NEXT: retq 252 call void asm sideeffect "vpermil2pd $4, $2, $1, $0, $0 \0a\09 vpermil2pd $4, $2, $3, $0, $0 \0a\09 vpermil2pd $4, $3, $1, $0, $0", "x,x,x,*m,i"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3, i8 3) 253 ret void 254} 255 256define void @test_vpermil2ps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) { 257; GENERIC-LABEL: test_vpermil2ps_128: 258; GENERIC: # %bb.0: 259; GENERIC-NEXT: #APP 260; GENERIC-NEXT: vpermil2ps $3, %xmm2, %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 261; GENERIC-NEXT: vpermil2ps $3, %xmm2, (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 262; GENERIC-NEXT: vpermil2ps $3, (%rdi), %xmm1, %xmm0, %xmm0 # sched: [7:1.00] 263; GENERIC-NEXT: #NO_APP 264; GENERIC-NEXT: retq # sched: [1:1.00] 265; 266; BDVER-LABEL: test_vpermil2ps_128: 267; BDVER: # %bb.0: 268; BDVER-NEXT: #APP 269; BDVER-NEXT: vpermil2ps $3, %xmm2, %xmm1, %xmm0, %xmm0 270; BDVER-NEXT: vpermil2ps $3, %xmm2, (%rdi), %xmm0, %xmm0 271; BDVER-NEXT: vpermil2ps $3, (%rdi), %xmm1, %xmm0, %xmm0 272; BDVER-NEXT: #NO_APP 273; BDVER-NEXT: retq 274 call void asm sideeffect "vpermil2ps $4, $2, $1, $0, $0 \0a\09 vpermil2ps $4, $2, $3, $0, $0 \0a\09 vpermil2ps $4, $3, $1, $0, $0", "x,x,x,*m,i"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3, i8 3) 275 ret void 276} 277 278define void @test_vpermil2ps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) { 279; GENERIC-LABEL: test_vpermil2ps_256: 280; GENERIC: # %bb.0: 281; GENERIC-NEXT: #APP 282; GENERIC-NEXT: vpermil2ps $3, %ymm2, %ymm1, %ymm0, %ymm0 # sched: [1:1.00] 283; GENERIC-NEXT: vpermil2ps $3, %ymm2, (%rdi), %ymm0, %ymm0 # sched: [8:1.00] 284; GENERIC-NEXT: vpermil2ps $3, (%rdi), %ymm1, %ymm0, %ymm0 # sched: [8:1.00] 285; GENERIC-NEXT: #NO_APP 286; GENERIC-NEXT: vzeroupper # sched: [100:0.33] 287; GENERIC-NEXT: retq # sched: [1:1.00] 288; 289; BDVER-LABEL: test_vpermil2ps_256: 290; BDVER: # %bb.0: 291; BDVER-NEXT: #APP 292; BDVER-NEXT: vpermil2ps $3, %ymm2, %ymm1, %ymm0, %ymm0 293; BDVER-NEXT: vpermil2ps $3, %ymm2, (%rdi), %ymm0, %ymm0 294; BDVER-NEXT: vpermil2ps $3, (%rdi), %ymm1, %ymm0, %ymm0 295; BDVER-NEXT: #NO_APP 296; BDVER-NEXT: vzeroupper 297; BDVER-NEXT: retq 298 call void asm sideeffect "vpermil2ps $4, $2, $1, $0, $0 \0a\09 vpermil2ps $4, $2, $3, $0, $0 \0a\09 vpermil2ps $4, $3, $1, $0, $0", "x,x,x,*m,i"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3, i8 3) 299 ret void 300} 301 302define void @test_vphaddbd(<2 x i64> %a0, <2 x i64> *%a1) { 303; GENERIC-LABEL: test_vphaddbd: 304; GENERIC: # %bb.0: 305; GENERIC-NEXT: #APP 306; GENERIC-NEXT: vphaddbd %xmm0, %xmm0 # sched: [3:1.50] 307; GENERIC-NEXT: vphaddbd (%rdi), %xmm0 # sched: [9:1.50] 308; GENERIC-NEXT: #NO_APP 309; GENERIC-NEXT: retq # sched: [1:1.00] 310; 311; BDVER-LABEL: test_vphaddbd: 312; BDVER: # %bb.0: 313; BDVER-NEXT: #APP 314; BDVER-NEXT: vphaddbd %xmm0, %xmm0 315; BDVER-NEXT: vphaddbd (%rdi), %xmm0 316; BDVER-NEXT: #NO_APP 317; BDVER-NEXT: retq 318 call void asm sideeffect "vphaddbd $0, $0 \0a\09 vphaddbd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 319 ret void 320} 321 322define void @test_vphaddbq(<2 x i64> %a0, <2 x i64> *%a1) { 323; GENERIC-LABEL: test_vphaddbq: 324; GENERIC: # %bb.0: 325; GENERIC-NEXT: #APP 326; GENERIC-NEXT: vphaddbq %xmm0, %xmm0 # sched: [3:1.50] 327; GENERIC-NEXT: vphaddbq (%rdi), %xmm0 # sched: [9:1.50] 328; GENERIC-NEXT: #NO_APP 329; GENERIC-NEXT: retq # sched: [1:1.00] 330; 331; BDVER-LABEL: test_vphaddbq: 332; BDVER: # %bb.0: 333; BDVER-NEXT: #APP 334; BDVER-NEXT: vphaddbq %xmm0, %xmm0 335; BDVER-NEXT: vphaddbq (%rdi), %xmm0 336; BDVER-NEXT: #NO_APP 337; BDVER-NEXT: retq 338 call void asm sideeffect "vphaddbq $0, $0 \0a\09 vphaddbq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 339 ret void 340} 341 342define void @test_vphaddbw(<2 x i64> %a0, <2 x i64> *%a1) { 343; GENERIC-LABEL: test_vphaddbw: 344; GENERIC: # %bb.0: 345; GENERIC-NEXT: #APP 346; GENERIC-NEXT: vphaddbw %xmm0, %xmm0 # sched: [3:1.50] 347; GENERIC-NEXT: vphaddbw (%rdi), %xmm0 # sched: [9:1.50] 348; GENERIC-NEXT: #NO_APP 349; GENERIC-NEXT: retq # sched: [1:1.00] 350; 351; BDVER-LABEL: test_vphaddbw: 352; BDVER: # %bb.0: 353; BDVER-NEXT: #APP 354; BDVER-NEXT: vphaddbw %xmm0, %xmm0 355; BDVER-NEXT: vphaddbw (%rdi), %xmm0 356; BDVER-NEXT: #NO_APP 357; BDVER-NEXT: retq 358 call void asm sideeffect "vphaddbw $0, $0 \0a\09 vphaddbw $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 359 ret void 360} 361 362define void @test_vphadddq(<2 x i64> %a0, <2 x i64> *%a1) { 363; GENERIC-LABEL: test_vphadddq: 364; GENERIC: # %bb.0: 365; GENERIC-NEXT: #APP 366; GENERIC-NEXT: vphadddq %xmm0, %xmm0 # sched: [3:1.50] 367; GENERIC-NEXT: vphadddq (%rdi), %xmm0 # sched: [9:1.50] 368; GENERIC-NEXT: #NO_APP 369; GENERIC-NEXT: retq # sched: [1:1.00] 370; 371; BDVER-LABEL: test_vphadddq: 372; BDVER: # %bb.0: 373; BDVER-NEXT: #APP 374; BDVER-NEXT: vphadddq %xmm0, %xmm0 375; BDVER-NEXT: vphadddq (%rdi), %xmm0 376; BDVER-NEXT: #NO_APP 377; BDVER-NEXT: retq 378 call void asm sideeffect "vphadddq $0, $0 \0a\09 vphadddq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 379 ret void 380} 381 382define void @test_vphaddubd(<2 x i64> %a0, <2 x i64> *%a1) { 383; GENERIC-LABEL: test_vphaddubd: 384; GENERIC: # %bb.0: 385; GENERIC-NEXT: #APP 386; GENERIC-NEXT: vphaddubd %xmm0, %xmm0 # sched: [3:1.50] 387; GENERIC-NEXT: vphaddubd (%rdi), %xmm0 # sched: [9:1.50] 388; GENERIC-NEXT: #NO_APP 389; GENERIC-NEXT: retq # sched: [1:1.00] 390; 391; BDVER-LABEL: test_vphaddubd: 392; BDVER: # %bb.0: 393; BDVER-NEXT: #APP 394; BDVER-NEXT: vphaddubd %xmm0, %xmm0 395; BDVER-NEXT: vphaddubd (%rdi), %xmm0 396; BDVER-NEXT: #NO_APP 397; BDVER-NEXT: retq 398 call void asm sideeffect "vphaddubd $0, $0 \0a\09 vphaddubd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 399 ret void 400} 401 402define void @test_vphaddubq(<2 x i64> %a0, <2 x i64> *%a1) { 403; GENERIC-LABEL: test_vphaddubq: 404; GENERIC: # %bb.0: 405; GENERIC-NEXT: #APP 406; GENERIC-NEXT: vphaddubq %xmm0, %xmm0 # sched: [3:1.50] 407; GENERIC-NEXT: vphaddubq (%rdi), %xmm0 # sched: [9:1.50] 408; GENERIC-NEXT: #NO_APP 409; GENERIC-NEXT: retq # sched: [1:1.00] 410; 411; BDVER-LABEL: test_vphaddubq: 412; BDVER: # %bb.0: 413; BDVER-NEXT: #APP 414; BDVER-NEXT: vphaddubq %xmm0, %xmm0 415; BDVER-NEXT: vphaddubq (%rdi), %xmm0 416; BDVER-NEXT: #NO_APP 417; BDVER-NEXT: retq 418 call void asm sideeffect "vphaddubq $0, $0 \0a\09 vphaddubq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 419 ret void 420} 421 422define void @test_vphaddubw(<2 x i64> %a0, <2 x i64> *%a1) { 423; GENERIC-LABEL: test_vphaddubw: 424; GENERIC: # %bb.0: 425; GENERIC-NEXT: #APP 426; GENERIC-NEXT: vphaddubw %xmm0, %xmm0 # sched: [3:1.50] 427; GENERIC-NEXT: vphaddubw (%rdi), %xmm0 # sched: [9:1.50] 428; GENERIC-NEXT: #NO_APP 429; GENERIC-NEXT: retq # sched: [1:1.00] 430; 431; BDVER-LABEL: test_vphaddubw: 432; BDVER: # %bb.0: 433; BDVER-NEXT: #APP 434; BDVER-NEXT: vphaddubw %xmm0, %xmm0 435; BDVER-NEXT: vphaddubw (%rdi), %xmm0 436; BDVER-NEXT: #NO_APP 437; BDVER-NEXT: retq 438 call void asm sideeffect "vphaddubw $0, $0 \0a\09 vphaddubw $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 439 ret void 440} 441 442define void @test_vphaddudq(<2 x i64> %a0, <2 x i64> *%a1) { 443; GENERIC-LABEL: test_vphaddudq: 444; GENERIC: # %bb.0: 445; GENERIC-NEXT: #APP 446; GENERIC-NEXT: vphaddudq %xmm0, %xmm0 # sched: [3:1.50] 447; GENERIC-NEXT: vphaddudq (%rdi), %xmm0 # sched: [9:1.50] 448; GENERIC-NEXT: #NO_APP 449; GENERIC-NEXT: retq # sched: [1:1.00] 450; 451; BDVER-LABEL: test_vphaddudq: 452; BDVER: # %bb.0: 453; BDVER-NEXT: #APP 454; BDVER-NEXT: vphaddudq %xmm0, %xmm0 455; BDVER-NEXT: vphaddudq (%rdi), %xmm0 456; BDVER-NEXT: #NO_APP 457; BDVER-NEXT: retq 458 call void asm sideeffect "vphaddudq $0, $0 \0a\09 vphaddudq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 459 ret void 460} 461 462define void @test_vphadduwd(<2 x i64> %a0, <2 x i64> *%a1) { 463; GENERIC-LABEL: test_vphadduwd: 464; GENERIC: # %bb.0: 465; GENERIC-NEXT: #APP 466; GENERIC-NEXT: vphadduwd %xmm0, %xmm0 # sched: [3:1.50] 467; GENERIC-NEXT: vphadduwd (%rdi), %xmm0 # sched: [9:1.50] 468; GENERIC-NEXT: #NO_APP 469; GENERIC-NEXT: retq # sched: [1:1.00] 470; 471; BDVER-LABEL: test_vphadduwd: 472; BDVER: # %bb.0: 473; BDVER-NEXT: #APP 474; BDVER-NEXT: vphadduwd %xmm0, %xmm0 475; BDVER-NEXT: vphadduwd (%rdi), %xmm0 476; BDVER-NEXT: #NO_APP 477; BDVER-NEXT: retq 478 call void asm sideeffect "vphadduwd $0, $0 \0a\09 vphadduwd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 479 ret void 480} 481 482define void @test_vphadduwq(<2 x i64> %a0, <2 x i64> *%a1) { 483; GENERIC-LABEL: test_vphadduwq: 484; GENERIC: # %bb.0: 485; GENERIC-NEXT: #APP 486; GENERIC-NEXT: vphadduwq %xmm0, %xmm0 # sched: [3:1.50] 487; GENERIC-NEXT: vphadduwq (%rdi), %xmm0 # sched: [9:1.50] 488; GENERIC-NEXT: #NO_APP 489; GENERIC-NEXT: retq # sched: [1:1.00] 490; 491; BDVER-LABEL: test_vphadduwq: 492; BDVER: # %bb.0: 493; BDVER-NEXT: #APP 494; BDVER-NEXT: vphadduwq %xmm0, %xmm0 495; BDVER-NEXT: vphadduwq (%rdi), %xmm0 496; BDVER-NEXT: #NO_APP 497; BDVER-NEXT: retq 498 call void asm sideeffect "vphadduwq $0, $0 \0a\09 vphadduwq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 499 ret void 500} 501 502define void @test_vphaddwd(<2 x i64> %a0, <2 x i64> *%a1) { 503; GENERIC-LABEL: test_vphaddwd: 504; GENERIC: # %bb.0: 505; GENERIC-NEXT: #APP 506; GENERIC-NEXT: vphaddwd %xmm0, %xmm0 # sched: [3:1.50] 507; GENERIC-NEXT: vphaddwd (%rdi), %xmm0 # sched: [9:1.50] 508; GENERIC-NEXT: #NO_APP 509; GENERIC-NEXT: retq # sched: [1:1.00] 510; 511; BDVER-LABEL: test_vphaddwd: 512; BDVER: # %bb.0: 513; BDVER-NEXT: #APP 514; BDVER-NEXT: vphaddwd %xmm0, %xmm0 515; BDVER-NEXT: vphaddwd (%rdi), %xmm0 516; BDVER-NEXT: #NO_APP 517; BDVER-NEXT: retq 518 call void asm sideeffect "vphaddwd $0, $0 \0a\09 vphaddwd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 519 ret void 520} 521 522define void @test_vphaddwq(<2 x i64> %a0, <2 x i64> *%a1) { 523; GENERIC-LABEL: test_vphaddwq: 524; GENERIC: # %bb.0: 525; GENERIC-NEXT: #APP 526; GENERIC-NEXT: vphaddwq %xmm0, %xmm0 # sched: [3:1.50] 527; GENERIC-NEXT: vphaddwq (%rdi), %xmm0 # sched: [9:1.50] 528; GENERIC-NEXT: #NO_APP 529; GENERIC-NEXT: retq # sched: [1:1.00] 530; 531; BDVER-LABEL: test_vphaddwq: 532; BDVER: # %bb.0: 533; BDVER-NEXT: #APP 534; BDVER-NEXT: vphaddwq %xmm0, %xmm0 535; BDVER-NEXT: vphaddwq (%rdi), %xmm0 536; BDVER-NEXT: #NO_APP 537; BDVER-NEXT: retq 538 call void asm sideeffect "vphaddwq $0, $0 \0a\09 vphaddwq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 539 ret void 540} 541 542define void @test_vphsubbw(<2 x i64> %a0, <2 x i64> *%a1) { 543; GENERIC-LABEL: test_vphsubbw: 544; GENERIC: # %bb.0: 545; GENERIC-NEXT: #APP 546; GENERIC-NEXT: vphsubbw %xmm0, %xmm0 # sched: [3:1.50] 547; GENERIC-NEXT: vphsubbw (%rdi), %xmm0 # sched: [9:1.50] 548; GENERIC-NEXT: #NO_APP 549; GENERIC-NEXT: retq # sched: [1:1.00] 550; 551; BDVER-LABEL: test_vphsubbw: 552; BDVER: # %bb.0: 553; BDVER-NEXT: #APP 554; BDVER-NEXT: vphsubbw %xmm0, %xmm0 555; BDVER-NEXT: vphsubbw (%rdi), %xmm0 556; BDVER-NEXT: #NO_APP 557; BDVER-NEXT: retq 558 call void asm sideeffect "vphsubbw $0, $0 \0a\09 vphsubbw $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 559 ret void 560} 561 562define void @test_vphsubdq(<2 x i64> %a0, <2 x i64> *%a1) { 563; GENERIC-LABEL: test_vphsubdq: 564; GENERIC: # %bb.0: 565; GENERIC-NEXT: #APP 566; GENERIC-NEXT: vphsubdq %xmm0, %xmm0 # sched: [3:1.50] 567; GENERIC-NEXT: vphsubdq (%rdi), %xmm0 # sched: [9:1.50] 568; GENERIC-NEXT: #NO_APP 569; GENERIC-NEXT: retq # sched: [1:1.00] 570; 571; BDVER-LABEL: test_vphsubdq: 572; BDVER: # %bb.0: 573; BDVER-NEXT: #APP 574; BDVER-NEXT: vphsubdq %xmm0, %xmm0 575; BDVER-NEXT: vphsubdq (%rdi), %xmm0 576; BDVER-NEXT: #NO_APP 577; BDVER-NEXT: retq 578 call void asm sideeffect "vphsubdq $0, $0 \0a\09 vphsubdq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 579 ret void 580} 581 582define void @test_vphsubwd(<2 x i64> %a0, <2 x i64> *%a1) { 583; GENERIC-LABEL: test_vphsubwd: 584; GENERIC: # %bb.0: 585; GENERIC-NEXT: #APP 586; GENERIC-NEXT: vphsubwd %xmm0, %xmm0 # sched: [3:1.50] 587; GENERIC-NEXT: vphsubwd (%rdi), %xmm0 # sched: [9:1.50] 588; GENERIC-NEXT: #NO_APP 589; GENERIC-NEXT: retq # sched: [1:1.00] 590; 591; BDVER-LABEL: test_vphsubwd: 592; BDVER: # %bb.0: 593; BDVER-NEXT: #APP 594; BDVER-NEXT: vphsubwd %xmm0, %xmm0 595; BDVER-NEXT: vphsubwd (%rdi), %xmm0 596; BDVER-NEXT: #NO_APP 597; BDVER-NEXT: retq 598 call void asm sideeffect "vphsubwd $0, $0 \0a\09 vphsubwd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1) 599 ret void 600} 601 602define void @test_vpmacsdd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 603; GENERIC-LABEL: test_vpmacsdd: 604; GENERIC: # %bb.0: 605; GENERIC-NEXT: #APP 606; GENERIC-NEXT: vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 607; GENERIC-NEXT: vpmacsdd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 608; GENERIC-NEXT: #NO_APP 609; GENERIC-NEXT: retq # sched: [1:1.00] 610; 611; BDVER-LABEL: test_vpmacsdd: 612; BDVER: # %bb.0: 613; BDVER-NEXT: #APP 614; BDVER-NEXT: vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0 615; BDVER-NEXT: vpmacsdd %xmm2, (%rdi), %xmm0, %xmm0 616; BDVER-NEXT: #NO_APP 617; BDVER-NEXT: retq 618 call void asm sideeffect "vpmacsdd $2, $1, $0, $0 \0a\09 vpmacsdd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 619 ret void 620} 621 622define void @test_vpmacsdqh(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 623; GENERIC-LABEL: test_vpmacsdqh: 624; GENERIC: # %bb.0: 625; GENERIC-NEXT: #APP 626; GENERIC-NEXT: vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 627; GENERIC-NEXT: vpmacsdqh %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 628; GENERIC-NEXT: #NO_APP 629; GENERIC-NEXT: retq # sched: [1:1.00] 630; 631; BDVER-LABEL: test_vpmacsdqh: 632; BDVER: # %bb.0: 633; BDVER-NEXT: #APP 634; BDVER-NEXT: vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0 635; BDVER-NEXT: vpmacsdqh %xmm2, (%rdi), %xmm0, %xmm0 636; BDVER-NEXT: #NO_APP 637; BDVER-NEXT: retq 638 call void asm sideeffect "vpmacsdqh $2, $1, $0, $0 \0a\09 vpmacsdqh $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 639 ret void 640} 641 642define void @test_vpmacsdql(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 643; GENERIC-LABEL: test_vpmacsdql: 644; GENERIC: # %bb.0: 645; GENERIC-NEXT: #APP 646; GENERIC-NEXT: vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 647; GENERIC-NEXT: vpmacsdql %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 648; GENERIC-NEXT: #NO_APP 649; GENERIC-NEXT: retq # sched: [1:1.00] 650; 651; BDVER-LABEL: test_vpmacsdql: 652; BDVER: # %bb.0: 653; BDVER-NEXT: #APP 654; BDVER-NEXT: vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0 655; BDVER-NEXT: vpmacsdql %xmm2, (%rdi), %xmm0, %xmm0 656; BDVER-NEXT: #NO_APP 657; BDVER-NEXT: retq 658 call void asm sideeffect "vpmacsdql $2, $1, $0, $0 \0a\09 vpmacsdql $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 659 ret void 660} 661 662define void @test_vpmacssdd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 663; GENERIC-LABEL: test_vpmacssdd: 664; GENERIC: # %bb.0: 665; GENERIC-NEXT: #APP 666; GENERIC-NEXT: vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 667; GENERIC-NEXT: vpmacssdd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 668; GENERIC-NEXT: #NO_APP 669; GENERIC-NEXT: retq # sched: [1:1.00] 670; 671; BDVER-LABEL: test_vpmacssdd: 672; BDVER: # %bb.0: 673; BDVER-NEXT: #APP 674; BDVER-NEXT: vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0 675; BDVER-NEXT: vpmacssdd %xmm2, (%rdi), %xmm0, %xmm0 676; BDVER-NEXT: #NO_APP 677; BDVER-NEXT: retq 678 call void asm sideeffect "vpmacssdd $2, $1, $0, $0 \0a\09 vpmacssdd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 679 ret void 680} 681 682define void @test_vpmacssdqh(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 683; GENERIC-LABEL: test_vpmacssdqh: 684; GENERIC: # %bb.0: 685; GENERIC-NEXT: #APP 686; GENERIC-NEXT: vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 687; GENERIC-NEXT: vpmacssdqh %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 688; GENERIC-NEXT: #NO_APP 689; GENERIC-NEXT: retq # sched: [1:1.00] 690; 691; BDVER-LABEL: test_vpmacssdqh: 692; BDVER: # %bb.0: 693; BDVER-NEXT: #APP 694; BDVER-NEXT: vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0 695; BDVER-NEXT: vpmacssdqh %xmm2, (%rdi), %xmm0, %xmm0 696; BDVER-NEXT: #NO_APP 697; BDVER-NEXT: retq 698 call void asm sideeffect "vpmacssdqh $2, $1, $0, $0 \0a\09 vpmacssdqh $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 699 ret void 700} 701 702define void @test_vpmacssdql(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 703; GENERIC-LABEL: test_vpmacssdql: 704; GENERIC: # %bb.0: 705; GENERIC-NEXT: #APP 706; GENERIC-NEXT: vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 707; GENERIC-NEXT: vpmacssdql %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 708; GENERIC-NEXT: #NO_APP 709; GENERIC-NEXT: retq # sched: [1:1.00] 710; 711; BDVER-LABEL: test_vpmacssdql: 712; BDVER: # %bb.0: 713; BDVER-NEXT: #APP 714; BDVER-NEXT: vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0 715; BDVER-NEXT: vpmacssdql %xmm2, (%rdi), %xmm0, %xmm0 716; BDVER-NEXT: #NO_APP 717; BDVER-NEXT: retq 718 call void asm sideeffect "vpmacssdql $2, $1, $0, $0 \0a\09 vpmacssdql $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 719 ret void 720} 721 722define void @test_vpmacsswd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 723; GENERIC-LABEL: test_vpmacsswd: 724; GENERIC: # %bb.0: 725; GENERIC-NEXT: #APP 726; GENERIC-NEXT: vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 727; GENERIC-NEXT: vpmacsswd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 728; GENERIC-NEXT: #NO_APP 729; GENERIC-NEXT: retq # sched: [1:1.00] 730; 731; BDVER-LABEL: test_vpmacsswd: 732; BDVER: # %bb.0: 733; BDVER-NEXT: #APP 734; BDVER-NEXT: vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0 735; BDVER-NEXT: vpmacsswd %xmm2, (%rdi), %xmm0, %xmm0 736; BDVER-NEXT: #NO_APP 737; BDVER-NEXT: retq 738 call void asm sideeffect "vpmacsswd $2, $1, $0, $0 \0a\09 vpmacsswd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 739 ret void 740} 741 742define void @test_vpmacssww(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 743; GENERIC-LABEL: test_vpmacssww: 744; GENERIC: # %bb.0: 745; GENERIC-NEXT: #APP 746; GENERIC-NEXT: vpmacssww %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 747; GENERIC-NEXT: vpmacssww %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 748; GENERIC-NEXT: #NO_APP 749; GENERIC-NEXT: retq # sched: [1:1.00] 750; 751; BDVER-LABEL: test_vpmacssww: 752; BDVER: # %bb.0: 753; BDVER-NEXT: #APP 754; BDVER-NEXT: vpmacssww %xmm2, %xmm1, %xmm0, %xmm0 755; BDVER-NEXT: vpmacssww %xmm2, (%rdi), %xmm0, %xmm0 756; BDVER-NEXT: #NO_APP 757; BDVER-NEXT: retq 758 call void asm sideeffect "vpmacssww $2, $1, $0, $0 \0a\09 vpmacssww $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 759 ret void 760} 761 762define void @test_vpmacswd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 763; GENERIC-LABEL: test_vpmacswd: 764; GENERIC: # %bb.0: 765; GENERIC-NEXT: #APP 766; GENERIC-NEXT: vpmacswd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 767; GENERIC-NEXT: vpmacswd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 768; GENERIC-NEXT: #NO_APP 769; GENERIC-NEXT: retq # sched: [1:1.00] 770; 771; BDVER-LABEL: test_vpmacswd: 772; BDVER: # %bb.0: 773; BDVER-NEXT: #APP 774; BDVER-NEXT: vpmacswd %xmm2, %xmm1, %xmm0, %xmm0 775; BDVER-NEXT: vpmacswd %xmm2, (%rdi), %xmm0, %xmm0 776; BDVER-NEXT: #NO_APP 777; BDVER-NEXT: retq 778 call void asm sideeffect "vpmacswd $2, $1, $0, $0 \0a\09 vpmacswd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 779 ret void 780} 781 782define void @test_vpmacsww(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 783; GENERIC-LABEL: test_vpmacsww: 784; GENERIC: # %bb.0: 785; GENERIC-NEXT: #APP 786; GENERIC-NEXT: vpmacsww %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 787; GENERIC-NEXT: vpmacsww %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 788; GENERIC-NEXT: #NO_APP 789; GENERIC-NEXT: retq # sched: [1:1.00] 790; 791; BDVER-LABEL: test_vpmacsww: 792; BDVER: # %bb.0: 793; BDVER-NEXT: #APP 794; BDVER-NEXT: vpmacsww %xmm2, %xmm1, %xmm0, %xmm0 795; BDVER-NEXT: vpmacsww %xmm2, (%rdi), %xmm0, %xmm0 796; BDVER-NEXT: #NO_APP 797; BDVER-NEXT: retq 798 call void asm sideeffect "vpmacsww $2, $1, $0, $0 \0a\09 vpmacsww $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 799 ret void 800} 801 802define void @test_vpmadcsswd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 803; GENERIC-LABEL: test_vpmadcsswd: 804; GENERIC: # %bb.0: 805; GENERIC-NEXT: #APP 806; GENERIC-NEXT: vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 807; GENERIC-NEXT: vpmadcsswd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 808; GENERIC-NEXT: #NO_APP 809; GENERIC-NEXT: retq # sched: [1:1.00] 810; 811; BDVER-LABEL: test_vpmadcsswd: 812; BDVER: # %bb.0: 813; BDVER-NEXT: #APP 814; BDVER-NEXT: vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0 815; BDVER-NEXT: vpmadcsswd %xmm2, (%rdi), %xmm0, %xmm0 816; BDVER-NEXT: #NO_APP 817; BDVER-NEXT: retq 818 call void asm sideeffect "vpmadcsswd $2, $1, $0, $0 \0a\09 vpmadcsswd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 819 ret void 820} 821 822define void @test_vpmadcswd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 823; GENERIC-LABEL: test_vpmadcswd: 824; GENERIC: # %bb.0: 825; GENERIC-NEXT: #APP 826; GENERIC-NEXT: vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00] 827; GENERIC-NEXT: vpmadcswd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00] 828; GENERIC-NEXT: #NO_APP 829; GENERIC-NEXT: retq # sched: [1:1.00] 830; 831; BDVER-LABEL: test_vpmadcswd: 832; BDVER: # %bb.0: 833; BDVER-NEXT: #APP 834; BDVER-NEXT: vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0 835; BDVER-NEXT: vpmadcswd %xmm2, (%rdi), %xmm0, %xmm0 836; BDVER-NEXT: #NO_APP 837; BDVER-NEXT: retq 838 call void asm sideeffect "vpmadcswd $2, $1, $0, $0 \0a\09 vpmadcswd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 839 ret void 840} 841 842define void @test_vpperm(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) { 843; GENERIC-LABEL: test_vpperm: 844; GENERIC: # %bb.0: 845; GENERIC-NEXT: #APP 846; GENERIC-NEXT: vpperm %xmm2, %xmm1, %xmm0, %xmm0 # sched: [1:0.50] 847; GENERIC-NEXT: vpperm (%rdi), %xmm1, %xmm0, %xmm0 # sched: [7:0.50] 848; GENERIC-NEXT: vpperm %xmm2, (%rdi), %xmm0, %xmm0 # sched: [7:0.50] 849; GENERIC-NEXT: #NO_APP 850; GENERIC-NEXT: retq # sched: [1:1.00] 851; 852; BDVER-LABEL: test_vpperm: 853; BDVER: # %bb.0: 854; BDVER-NEXT: #APP 855; BDVER-NEXT: vpperm %xmm2, %xmm1, %xmm0, %xmm0 856; BDVER-NEXT: vpperm (%rdi), %xmm1, %xmm0, %xmm0 857; BDVER-NEXT: vpperm %xmm2, (%rdi), %xmm0, %xmm0 858; BDVER-NEXT: #NO_APP 859; BDVER-NEXT: retq 860 call void asm sideeffect "vpperm $2, $1, $0, $0 \0A\09 vpperm $3, $1, $0, $0 \0A\09 vpperm $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) 861 ret void 862} 863 864define void @test_vprot(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) { 865; GENERIC-LABEL: test_vprot: 866; GENERIC: # %bb.0: 867; GENERIC-NEXT: #APP 868; GENERIC-NEXT: vprotb %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 869; GENERIC-NEXT: vprotd %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 870; GENERIC-NEXT: vprotq %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 871; GENERIC-NEXT: vprotw %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 872; GENERIC-NEXT: vprotb (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 873; GENERIC-NEXT: vprotd (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 874; GENERIC-NEXT: vprotq (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 875; GENERIC-NEXT: vprotw (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 876; GENERIC-NEXT: vprotb %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 877; GENERIC-NEXT: vprotd %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 878; GENERIC-NEXT: vprotq %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 879; GENERIC-NEXT: vprotw %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 880; GENERIC-NEXT: vprotb $7, %xmm0, %xmm0 # sched: [1:1.00] 881; GENERIC-NEXT: vprotd $7, %xmm0, %xmm0 # sched: [1:1.00] 882; GENERIC-NEXT: vprotq $7, %xmm0, %xmm0 # sched: [1:1.00] 883; GENERIC-NEXT: vprotw $7, %xmm0, %xmm0 # sched: [1:1.00] 884; GENERIC-NEXT: vprotb $7, (%rdi), %xmm0 # sched: [7:1.00] 885; GENERIC-NEXT: vprotd $7, (%rdi), %xmm0 # sched: [7:1.00] 886; GENERIC-NEXT: vprotq $7, (%rdi), %xmm0 # sched: [7:1.00] 887; GENERIC-NEXT: vprotw $7, (%rdi), %xmm0 # sched: [7:1.00] 888; GENERIC-NEXT: #NO_APP 889; GENERIC-NEXT: retq # sched: [1:1.00] 890; 891; BDVER-LABEL: test_vprot: 892; BDVER: # %bb.0: 893; BDVER-NEXT: #APP 894; BDVER-NEXT: vprotb %xmm1, %xmm0, %xmm0 895; BDVER-NEXT: vprotd %xmm1, %xmm0, %xmm0 896; BDVER-NEXT: vprotq %xmm1, %xmm0, %xmm0 897; BDVER-NEXT: vprotw %xmm1, %xmm0, %xmm0 898; BDVER-NEXT: vprotb (%rdi), %xmm0, %xmm0 899; BDVER-NEXT: vprotd (%rdi), %xmm0, %xmm0 900; BDVER-NEXT: vprotq (%rdi), %xmm0, %xmm0 901; BDVER-NEXT: vprotw (%rdi), %xmm0, %xmm0 902; BDVER-NEXT: vprotb %xmm0, (%rdi), %xmm0 903; BDVER-NEXT: vprotd %xmm0, (%rdi), %xmm0 904; BDVER-NEXT: vprotq %xmm0, (%rdi), %xmm0 905; BDVER-NEXT: vprotw %xmm0, (%rdi), %xmm0 906; BDVER-NEXT: vprotb $7, %xmm0, %xmm0 907; BDVER-NEXT: vprotd $7, %xmm0, %xmm0 908; BDVER-NEXT: vprotq $7, %xmm0, %xmm0 909; BDVER-NEXT: vprotw $7, %xmm0, %xmm0 910; BDVER-NEXT: vprotb $7, (%rdi), %xmm0 911; BDVER-NEXT: vprotd $7, (%rdi), %xmm0 912; BDVER-NEXT: vprotq $7, (%rdi), %xmm0 913; BDVER-NEXT: vprotw $7, (%rdi), %xmm0 914; BDVER-NEXT: #NO_APP 915; BDVER-NEXT: retq 916 call void asm sideeffect "vprotb $1, $0, $0 \0A\09 vprotd $1, $0, $0 \0A\09 vprotq $1, $0, $0 \0A\09 vprotw $1, $0, $0 \0A\09 vprotb $2, $0, $0 \0A\09 vprotd $2, $0, $0 \0A\09 vprotq $2, $0, $0 \0A\09 vprotw $2, $0, $0 \0A\09 vprotb $0, $2, $0 \0A\09 vprotd $0, $2, $0 \0A\09 vprotq $0, $2, $0 \0A\09 vprotw $0, $2, $0 \0A\09 vprotb $3, $0, $0 \0A\09 vprotd $3, $0, $0 \0A\09 vprotq $3, $0, $0 \0A\09 vprotw $3, $0, $0 \0A\09 vprotb $3, $2, $0 \0A\09 vprotd $3, $2, $0 \0A\09 vprotq $3, $2, $0 \0A\09 vprotw $3, $2, $0", "x,x,*m,i"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2, i8 7) 917 ret void 918} 919 920define void @test_vpsha(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) { 921; GENERIC-LABEL: test_vpsha: 922; GENERIC: # %bb.0: 923; GENERIC-NEXT: #APP 924; GENERIC-NEXT: vpshab %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 925; GENERIC-NEXT: vpshad %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 926; GENERIC-NEXT: vpshaq %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 927; GENERIC-NEXT: vpshaw %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 928; GENERIC-NEXT: vpshab (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 929; GENERIC-NEXT: vpshad (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 930; GENERIC-NEXT: vpshaq (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 931; GENERIC-NEXT: vpshaw (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 932; GENERIC-NEXT: vpshab %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 933; GENERIC-NEXT: vpshad %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 934; GENERIC-NEXT: vpshaq %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 935; GENERIC-NEXT: vpshaw %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 936; GENERIC-NEXT: #NO_APP 937; GENERIC-NEXT: retq # sched: [1:1.00] 938; 939; BDVER-LABEL: test_vpsha: 940; BDVER: # %bb.0: 941; BDVER-NEXT: #APP 942; BDVER-NEXT: vpshab %xmm1, %xmm0, %xmm0 943; BDVER-NEXT: vpshad %xmm1, %xmm0, %xmm0 944; BDVER-NEXT: vpshaq %xmm1, %xmm0, %xmm0 945; BDVER-NEXT: vpshaw %xmm1, %xmm0, %xmm0 946; BDVER-NEXT: vpshab (%rdi), %xmm0, %xmm0 947; BDVER-NEXT: vpshad (%rdi), %xmm0, %xmm0 948; BDVER-NEXT: vpshaq (%rdi), %xmm0, %xmm0 949; BDVER-NEXT: vpshaw (%rdi), %xmm0, %xmm0 950; BDVER-NEXT: vpshab %xmm0, (%rdi), %xmm0 951; BDVER-NEXT: vpshad %xmm0, (%rdi), %xmm0 952; BDVER-NEXT: vpshaq %xmm0, (%rdi), %xmm0 953; BDVER-NEXT: vpshaw %xmm0, (%rdi), %xmm0 954; BDVER-NEXT: #NO_APP 955; BDVER-NEXT: retq 956 call void asm sideeffect "vpshab $1, $0, $0 \0A\09 vpshad $1, $0, $0 \0A\09 vpshaq $1, $0, $0 \0A\09 vpshaw $1, $0, $0 \0A\09 vpshab $2, $0, $0 \0A\09 vpshad $2, $0, $0 \0A\09 vpshaq $2, $0, $0 \0A\09 vpshaw $2, $0, $0 \0A\09 vpshab $0, $2, $0 \0A\09 vpshad $0, $2, $0 \0A\09 vpshaq $0, $2, $0 \0A\09 vpshaw $0, $2, $0", "x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) 957 ret void 958} 959 960define void @test_vpshl(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) { 961; GENERIC-LABEL: test_vpshl: 962; GENERIC: # %bb.0: 963; GENERIC-NEXT: #APP 964; GENERIC-NEXT: vpshlb %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 965; GENERIC-NEXT: vpshld %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 966; GENERIC-NEXT: vpshlq %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 967; GENERIC-NEXT: vpshlw %xmm1, %xmm0, %xmm0 # sched: [1:1.00] 968; GENERIC-NEXT: vpshlb (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 969; GENERIC-NEXT: vpshld (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 970; GENERIC-NEXT: vpshlq (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 971; GENERIC-NEXT: vpshlw (%rdi), %xmm0, %xmm0 # sched: [7:1.00] 972; GENERIC-NEXT: vpshlb %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 973; GENERIC-NEXT: vpshld %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 974; GENERIC-NEXT: vpshlq %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 975; GENERIC-NEXT: vpshlw %xmm0, (%rdi), %xmm0 # sched: [7:1.00] 976; GENERIC-NEXT: #NO_APP 977; GENERIC-NEXT: retq # sched: [1:1.00] 978; 979; BDVER-LABEL: test_vpshl: 980; BDVER: # %bb.0: 981; BDVER-NEXT: #APP 982; BDVER-NEXT: vpshlb %xmm1, %xmm0, %xmm0 983; BDVER-NEXT: vpshld %xmm1, %xmm0, %xmm0 984; BDVER-NEXT: vpshlq %xmm1, %xmm0, %xmm0 985; BDVER-NEXT: vpshlw %xmm1, %xmm0, %xmm0 986; BDVER-NEXT: vpshlb (%rdi), %xmm0, %xmm0 987; BDVER-NEXT: vpshld (%rdi), %xmm0, %xmm0 988; BDVER-NEXT: vpshlq (%rdi), %xmm0, %xmm0 989; BDVER-NEXT: vpshlw (%rdi), %xmm0, %xmm0 990; BDVER-NEXT: vpshlb %xmm0, (%rdi), %xmm0 991; BDVER-NEXT: vpshld %xmm0, (%rdi), %xmm0 992; BDVER-NEXT: vpshlq %xmm0, (%rdi), %xmm0 993; BDVER-NEXT: vpshlw %xmm0, (%rdi), %xmm0 994; BDVER-NEXT: #NO_APP 995; BDVER-NEXT: retq 996 call void asm sideeffect "vpshlb $1, $0, $0 \0A\09 vpshld $1, $0, $0 \0A\09 vpshlq $1, $0, $0 \0A\09 vpshlw $1, $0, $0 \0A\09 vpshlb $2, $0, $0 \0A\09 vpshld $2, $0, $0 \0A\09 vpshlq $2, $0, $0 \0A\09 vpshlw $2, $0, $0 \0A\09 vpshlb $0, $2, $0 \0A\09 vpshld $0, $2, $0 \0A\09 vpshlq $0, $2, $0 \0A\09 vpshlw $0, $2, $0", "x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) 997 ret void 998} 999