1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=X86,X86-SSE 3; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=X86,X86-AVX,X86-AVX1 4; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=X86,X86-AVX,X86-AVX2 5; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512vl | FileCheck %s --check-prefixes=X86,X86-AVX512,X86-AVX512VL 6; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512fp16 | FileCheck %s --check-prefixes=X86,X86-AVX512,X86-AVX512FP16 7; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefixes=X86,X86-AVX512,X86-AVX512VLDQ 8; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=X64,X64-SSE 9; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=X64,X64-AVX,X64-AVX1 10; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=X64,X64-AVX,X64-AVX2 11; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl | FileCheck %s --check-prefixes=X64,X64-AVX512,X64-AVX512VL 12; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512fp16 | FileCheck %s --check-prefixes=X64,X64-AVX512,X64-AVX512FP16 13; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefixes=X64,X64-AVX512,X64-AVX512VLDQ 14 15; 16; 128-bit Vectors 17; 18 19define <2 x double> @fneg_v2f64(<2 x double> %p) nounwind { 20; X86-SSE-LABEL: fneg_v2f64: 21; X86-SSE: # %bb.0: 22; X86-SSE-NEXT: xorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0 23; X86-SSE-NEXT: retl 24; 25; X86-AVX-LABEL: fneg_v2f64: 26; X86-AVX: # %bb.0: 27; X86-AVX-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0 28; X86-AVX-NEXT: retl 29; 30; X86-AVX512VL-LABEL: fneg_v2f64: 31; X86-AVX512VL: # %bb.0: 32; X86-AVX512VL-NEXT: vpxorq {{\.?LCPI[0-9]+_[0-9]+}}{1to2}, %xmm0, %xmm0 33; X86-AVX512VL-NEXT: retl 34; 35; X86-AVX512FP16-LABEL: fneg_v2f64: 36; X86-AVX512FP16: # %bb.0: 37; X86-AVX512FP16-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}{1to2}, %xmm0, %xmm0 38; X86-AVX512FP16-NEXT: retl 39; 40; X86-AVX512VLDQ-LABEL: fneg_v2f64: 41; X86-AVX512VLDQ: # %bb.0: 42; X86-AVX512VLDQ-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}{1to2}, %xmm0, %xmm0 43; X86-AVX512VLDQ-NEXT: retl 44; 45; X64-SSE-LABEL: fneg_v2f64: 46; X64-SSE: # %bb.0: 47; X64-SSE-NEXT: xorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 48; X64-SSE-NEXT: retq 49; 50; X64-AVX-LABEL: fneg_v2f64: 51; X64-AVX: # %bb.0: 52; X64-AVX-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 53; X64-AVX-NEXT: retq 54; 55; X64-AVX512VL-LABEL: fneg_v2f64: 56; X64-AVX512VL: # %bb.0: 57; X64-AVX512VL-NEXT: vpxorq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm0 58; X64-AVX512VL-NEXT: retq 59; 60; X64-AVX512FP16-LABEL: fneg_v2f64: 61; X64-AVX512FP16: # %bb.0: 62; X64-AVX512FP16-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm0 63; X64-AVX512FP16-NEXT: retq 64; 65; X64-AVX512VLDQ-LABEL: fneg_v2f64: 66; X64-AVX512VLDQ: # %bb.0: 67; X64-AVX512VLDQ-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm0 68; X64-AVX512VLDQ-NEXT: retq 69 %t = fsub <2 x double> <double -0.0, double -0.0>, %p 70 ret <2 x double> %t 71} 72 73define <4 x float> @fneg_v4f32(<4 x float> %p) nounwind { 74; X86-SSE-LABEL: fneg_v4f32: 75; X86-SSE: # %bb.0: 76; X86-SSE-NEXT: xorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0 77; X86-SSE-NEXT: retl 78; 79; X86-AVX1-LABEL: fneg_v4f32: 80; X86-AVX1: # %bb.0: 81; X86-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0 82; X86-AVX1-NEXT: retl 83; 84; X86-AVX2-LABEL: fneg_v4f32: 85; X86-AVX2: # %bb.0: 86; X86-AVX2-NEXT: vbroadcastss {{.*#+}} xmm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 87; X86-AVX2-NEXT: vxorps %xmm1, %xmm0, %xmm0 88; X86-AVX2-NEXT: retl 89; 90; X86-AVX512VL-LABEL: fneg_v4f32: 91; X86-AVX512VL: # %bb.0: 92; X86-AVX512VL-NEXT: vpxord {{\.?LCPI[0-9]+_[0-9]+}}{1to4}, %xmm0, %xmm0 93; X86-AVX512VL-NEXT: retl 94; 95; X86-AVX512FP16-LABEL: fneg_v4f32: 96; X86-AVX512FP16: # %bb.0: 97; X86-AVX512FP16-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}{1to4}, %xmm0, %xmm0 98; X86-AVX512FP16-NEXT: retl 99; 100; X86-AVX512VLDQ-LABEL: fneg_v4f32: 101; X86-AVX512VLDQ: # %bb.0: 102; X86-AVX512VLDQ-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}{1to4}, %xmm0, %xmm0 103; X86-AVX512VLDQ-NEXT: retl 104; 105; X64-SSE-LABEL: fneg_v4f32: 106; X64-SSE: # %bb.0: 107; X64-SSE-NEXT: xorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 108; X64-SSE-NEXT: retq 109; 110; X64-AVX1-LABEL: fneg_v4f32: 111; X64-AVX1: # %bb.0: 112; X64-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 113; X64-AVX1-NEXT: retq 114; 115; X64-AVX2-LABEL: fneg_v4f32: 116; X64-AVX2: # %bb.0: 117; X64-AVX2-NEXT: vbroadcastss {{.*#+}} xmm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 118; X64-AVX2-NEXT: vxorps %xmm1, %xmm0, %xmm0 119; X64-AVX2-NEXT: retq 120; 121; X64-AVX512VL-LABEL: fneg_v4f32: 122; X64-AVX512VL: # %bb.0: 123; X64-AVX512VL-NEXT: vpxord {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0 124; X64-AVX512VL-NEXT: retq 125; 126; X64-AVX512FP16-LABEL: fneg_v4f32: 127; X64-AVX512FP16: # %bb.0: 128; X64-AVX512FP16-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0 129; X64-AVX512FP16-NEXT: retq 130; 131; X64-AVX512VLDQ-LABEL: fneg_v4f32: 132; X64-AVX512VLDQ: # %bb.0: 133; X64-AVX512VLDQ-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0 134; X64-AVX512VLDQ-NEXT: retq 135 %t = fsub <4 x float> <float -0.0, float -0.0, float -0.0, float -0.0>, %p 136 ret <4 x float> %t 137} 138 139define <8 x half> @fneg_v8f16(ptr %p) nounwind { 140; X86-SSE-LABEL: fneg_v8f16: 141; X86-SSE: # %bb.0: 142; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax 143; X86-SSE-NEXT: movaps (%eax), %xmm0 144; X86-SSE-NEXT: xorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0 145; X86-SSE-NEXT: retl 146; 147; X86-AVX1-LABEL: fneg_v8f16: 148; X86-AVX1: # %bb.0: 149; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax 150; X86-AVX1-NEXT: vmovaps (%eax), %xmm0 151; X86-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0 152; X86-AVX1-NEXT: retl 153; 154; X86-AVX2-LABEL: fneg_v8f16: 155; X86-AVX2: # %bb.0: 156; X86-AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 157; X86-AVX2-NEXT: vpbroadcastw {{.*#+}} xmm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 158; X86-AVX2-NEXT: vpxor (%eax), %xmm0, %xmm0 159; X86-AVX2-NEXT: retl 160; 161; X86-AVX512-LABEL: fneg_v8f16: 162; X86-AVX512: # %bb.0: 163; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax 164; X86-AVX512-NEXT: vpbroadcastw {{.*#+}} xmm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 165; X86-AVX512-NEXT: vpxor (%eax), %xmm0, %xmm0 166; X86-AVX512-NEXT: retl 167; 168; X64-SSE-LABEL: fneg_v8f16: 169; X64-SSE: # %bb.0: 170; X64-SSE-NEXT: movaps (%rdi), %xmm0 171; X64-SSE-NEXT: xorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 172; X64-SSE-NEXT: retq 173; 174; X64-AVX1-LABEL: fneg_v8f16: 175; X64-AVX1: # %bb.0: 176; X64-AVX1-NEXT: vmovaps (%rdi), %xmm0 177; X64-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 178; X64-AVX1-NEXT: retq 179; 180; X64-AVX2-LABEL: fneg_v8f16: 181; X64-AVX2: # %bb.0: 182; X64-AVX2-NEXT: vpbroadcastw {{.*#+}} xmm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 183; X64-AVX2-NEXT: vpxor (%rdi), %xmm0, %xmm0 184; X64-AVX2-NEXT: retq 185; 186; X64-AVX512-LABEL: fneg_v8f16: 187; X64-AVX512: # %bb.0: 188; X64-AVX512-NEXT: vpbroadcastw {{.*#+}} xmm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 189; X64-AVX512-NEXT: vpxor (%rdi), %xmm0, %xmm0 190; X64-AVX512-NEXT: retq 191 %v = load <8 x half>, ptr %p, align 16 192 %nnv = fsub <8 x half> <half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0>, %v 193 ret <8 x half> %nnv 194} 195 196; 197; 256-bit Vectors 198; 199 200define <4 x double> @fneg_v4f64(<4 x double> %p) nounwind { 201; X86-SSE-LABEL: fneg_v4f64: 202; X86-SSE: # %bb.0: 203; X86-SSE-NEXT: movaps {{.*#+}} xmm2 = [-0.0E+0,-0.0E+0] 204; X86-SSE-NEXT: xorps %xmm2, %xmm0 205; X86-SSE-NEXT: xorps %xmm2, %xmm1 206; X86-SSE-NEXT: retl 207; 208; X86-AVX1-LABEL: fneg_v4f64: 209; X86-AVX1: # %bb.0: 210; X86-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0 211; X86-AVX1-NEXT: retl 212; 213; X86-AVX2-LABEL: fneg_v4f64: 214; X86-AVX2: # %bb.0: 215; X86-AVX2-NEXT: vbroadcastsd {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 216; X86-AVX2-NEXT: vxorps %ymm1, %ymm0, %ymm0 217; X86-AVX2-NEXT: retl 218; 219; X86-AVX512VL-LABEL: fneg_v4f64: 220; X86-AVX512VL: # %bb.0: 221; X86-AVX512VL-NEXT: vpxorq {{\.?LCPI[0-9]+_[0-9]+}}{1to4}, %ymm0, %ymm0 222; X86-AVX512VL-NEXT: retl 223; 224; X86-AVX512FP16-LABEL: fneg_v4f64: 225; X86-AVX512FP16: # %bb.0: 226; X86-AVX512FP16-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}{1to4}, %ymm0, %ymm0 227; X86-AVX512FP16-NEXT: retl 228; 229; X86-AVX512VLDQ-LABEL: fneg_v4f64: 230; X86-AVX512VLDQ: # %bb.0: 231; X86-AVX512VLDQ-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}{1to4}, %ymm0, %ymm0 232; X86-AVX512VLDQ-NEXT: retl 233; 234; X64-SSE-LABEL: fneg_v4f64: 235; X64-SSE: # %bb.0: 236; X64-SSE-NEXT: movaps {{.*#+}} xmm2 = [-0.0E+0,-0.0E+0] 237; X64-SSE-NEXT: xorps %xmm2, %xmm0 238; X64-SSE-NEXT: xorps %xmm2, %xmm1 239; X64-SSE-NEXT: retq 240; 241; X64-AVX1-LABEL: fneg_v4f64: 242; X64-AVX1: # %bb.0: 243; X64-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0 244; X64-AVX1-NEXT: retq 245; 246; X64-AVX2-LABEL: fneg_v4f64: 247; X64-AVX2: # %bb.0: 248; X64-AVX2-NEXT: vbroadcastsd {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 249; X64-AVX2-NEXT: vxorps %ymm1, %ymm0, %ymm0 250; X64-AVX2-NEXT: retq 251; 252; X64-AVX512VL-LABEL: fneg_v4f64: 253; X64-AVX512VL: # %bb.0: 254; X64-AVX512VL-NEXT: vpxorq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm0 255; X64-AVX512VL-NEXT: retq 256; 257; X64-AVX512FP16-LABEL: fneg_v4f64: 258; X64-AVX512FP16: # %bb.0: 259; X64-AVX512FP16-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm0 260; X64-AVX512FP16-NEXT: retq 261; 262; X64-AVX512VLDQ-LABEL: fneg_v4f64: 263; X64-AVX512VLDQ: # %bb.0: 264; X64-AVX512VLDQ-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm0, %ymm0 265; X64-AVX512VLDQ-NEXT: retq 266 %t = fsub <4 x double> <double -0.0, double -0.0, double -0.0, double -0.0>, %p 267 ret <4 x double> %t 268} 269 270define <8 x float> @fneg_v8f32(<8 x float> %p) nounwind { 271; X86-SSE-LABEL: fneg_v8f32: 272; X86-SSE: # %bb.0: 273; X86-SSE-NEXT: movaps {{.*#+}} xmm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 274; X86-SSE-NEXT: xorps %xmm2, %xmm0 275; X86-SSE-NEXT: xorps %xmm2, %xmm1 276; X86-SSE-NEXT: retl 277; 278; X86-AVX1-LABEL: fneg_v8f32: 279; X86-AVX1: # %bb.0: 280; X86-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0 281; X86-AVX1-NEXT: retl 282; 283; X86-AVX2-LABEL: fneg_v8f32: 284; X86-AVX2: # %bb.0: 285; X86-AVX2-NEXT: vbroadcastss {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 286; X86-AVX2-NEXT: vxorps %ymm1, %ymm0, %ymm0 287; X86-AVX2-NEXT: retl 288; 289; X86-AVX512VL-LABEL: fneg_v8f32: 290; X86-AVX512VL: # %bb.0: 291; X86-AVX512VL-NEXT: vpxord {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %ymm0 292; X86-AVX512VL-NEXT: retl 293; 294; X86-AVX512FP16-LABEL: fneg_v8f32: 295; X86-AVX512FP16: # %bb.0: 296; X86-AVX512FP16-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %ymm0 297; X86-AVX512FP16-NEXT: retl 298; 299; X86-AVX512VLDQ-LABEL: fneg_v8f32: 300; X86-AVX512VLDQ: # %bb.0: 301; X86-AVX512VLDQ-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %ymm0 302; X86-AVX512VLDQ-NEXT: retl 303; 304; X64-SSE-LABEL: fneg_v8f32: 305; X64-SSE: # %bb.0: 306; X64-SSE-NEXT: movaps {{.*#+}} xmm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 307; X64-SSE-NEXT: xorps %xmm2, %xmm0 308; X64-SSE-NEXT: xorps %xmm2, %xmm1 309; X64-SSE-NEXT: retq 310; 311; X64-AVX1-LABEL: fneg_v8f32: 312; X64-AVX1: # %bb.0: 313; X64-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0 314; X64-AVX1-NEXT: retq 315; 316; X64-AVX2-LABEL: fneg_v8f32: 317; X64-AVX2: # %bb.0: 318; X64-AVX2-NEXT: vbroadcastss {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 319; X64-AVX2-NEXT: vxorps %ymm1, %ymm0, %ymm0 320; X64-AVX2-NEXT: retq 321; 322; X64-AVX512VL-LABEL: fneg_v8f32: 323; X64-AVX512VL: # %bb.0: 324; X64-AVX512VL-NEXT: vpxord {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0 325; X64-AVX512VL-NEXT: retq 326; 327; X64-AVX512FP16-LABEL: fneg_v8f32: 328; X64-AVX512FP16: # %bb.0: 329; X64-AVX512FP16-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0 330; X64-AVX512FP16-NEXT: retq 331; 332; X64-AVX512VLDQ-LABEL: fneg_v8f32: 333; X64-AVX512VLDQ: # %bb.0: 334; X64-AVX512VLDQ-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0 335; X64-AVX512VLDQ-NEXT: retq 336 %t = fsub <8 x float> <float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0>, %p 337 ret <8 x float> %t 338} 339 340define <16 x half> @fneg_v16f16(ptr %p) nounwind { 341; X86-SSE-LABEL: fneg_v16f16: 342; X86-SSE: # %bb.0: 343; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax 344; X86-SSE-NEXT: movaps {{.*#+}} xmm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 345; X86-SSE-NEXT: movaps (%eax), %xmm0 346; X86-SSE-NEXT: xorps %xmm1, %xmm0 347; X86-SSE-NEXT: xorps 16(%eax), %xmm1 348; X86-SSE-NEXT: retl 349; 350; X86-AVX1-LABEL: fneg_v16f16: 351; X86-AVX1: # %bb.0: 352; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax 353; X86-AVX1-NEXT: vmovups (%eax), %ymm0 354; X86-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0 355; X86-AVX1-NEXT: retl 356; 357; X86-AVX2-LABEL: fneg_v16f16: 358; X86-AVX2: # %bb.0: 359; X86-AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 360; X86-AVX2-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 361; X86-AVX2-NEXT: vpxor (%eax), %ymm0, %ymm0 362; X86-AVX2-NEXT: retl 363; 364; X86-AVX512-LABEL: fneg_v16f16: 365; X86-AVX512: # %bb.0: 366; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax 367; X86-AVX512-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 368; X86-AVX512-NEXT: vpxor (%eax), %ymm0, %ymm0 369; X86-AVX512-NEXT: retl 370; 371; X64-SSE-LABEL: fneg_v16f16: 372; X64-SSE: # %bb.0: 373; X64-SSE-NEXT: movaps {{.*#+}} xmm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 374; X64-SSE-NEXT: movaps (%rdi), %xmm0 375; X64-SSE-NEXT: xorps %xmm1, %xmm0 376; X64-SSE-NEXT: xorps 16(%rdi), %xmm1 377; X64-SSE-NEXT: retq 378; 379; X64-AVX1-LABEL: fneg_v16f16: 380; X64-AVX1: # %bb.0: 381; X64-AVX1-NEXT: vmovups (%rdi), %ymm0 382; X64-AVX1-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0 383; X64-AVX1-NEXT: retq 384; 385; X64-AVX2-LABEL: fneg_v16f16: 386; X64-AVX2: # %bb.0: 387; X64-AVX2-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 388; X64-AVX2-NEXT: vpxor (%rdi), %ymm0, %ymm0 389; X64-AVX2-NEXT: retq 390; 391; X64-AVX512-LABEL: fneg_v16f16: 392; X64-AVX512: # %bb.0: 393; X64-AVX512-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 394; X64-AVX512-NEXT: vpxor (%rdi), %ymm0, %ymm0 395; X64-AVX512-NEXT: retq 396 %v = load <16 x half>, ptr %p, align 16 397 %nnv = fsub <16 x half> <half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0>, %v 398 ret <16 x half> %nnv 399} 400 401; 402; 512-bit Vectors 403; 404 405define <8 x double> @fneg_v8f64(<8 x double> %p) nounwind { 406; X86-SSE-LABEL: fneg_v8f64: 407; X86-SSE: # %bb.0: 408; X86-SSE-NEXT: pushl %ebp 409; X86-SSE-NEXT: movl %esp, %ebp 410; X86-SSE-NEXT: andl $-16, %esp 411; X86-SSE-NEXT: subl $16, %esp 412; X86-SSE-NEXT: movaps {{.*#+}} xmm3 = [-0.0E+0,-0.0E+0] 413; X86-SSE-NEXT: xorps %xmm3, %xmm0 414; X86-SSE-NEXT: xorps %xmm3, %xmm1 415; X86-SSE-NEXT: xorps %xmm3, %xmm2 416; X86-SSE-NEXT: xorps 8(%ebp), %xmm3 417; X86-SSE-NEXT: movl %ebp, %esp 418; X86-SSE-NEXT: popl %ebp 419; X86-SSE-NEXT: retl 420; 421; X86-AVX-LABEL: fneg_v8f64: 422; X86-AVX: # %bb.0: 423; X86-AVX-NEXT: vbroadcastsd {{.*#+}} ymm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 424; X86-AVX-NEXT: vxorps %ymm2, %ymm0, %ymm0 425; X86-AVX-NEXT: vxorps %ymm2, %ymm1, %ymm1 426; X86-AVX-NEXT: retl 427; 428; X86-AVX512VL-LABEL: fneg_v8f64: 429; X86-AVX512VL: # %bb.0: 430; X86-AVX512VL-NEXT: vpxorq {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %zmm0, %zmm0 431; X86-AVX512VL-NEXT: retl 432; 433; X86-AVX512FP16-LABEL: fneg_v8f64: 434; X86-AVX512FP16: # %bb.0: 435; X86-AVX512FP16-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %zmm0, %zmm0 436; X86-AVX512FP16-NEXT: retl 437; 438; X86-AVX512VLDQ-LABEL: fneg_v8f64: 439; X86-AVX512VLDQ: # %bb.0: 440; X86-AVX512VLDQ-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %zmm0, %zmm0 441; X86-AVX512VLDQ-NEXT: retl 442; 443; X64-SSE-LABEL: fneg_v8f64: 444; X64-SSE: # %bb.0: 445; X64-SSE-NEXT: movaps {{.*#+}} xmm4 = [-0.0E+0,-0.0E+0] 446; X64-SSE-NEXT: xorps %xmm4, %xmm0 447; X64-SSE-NEXT: xorps %xmm4, %xmm1 448; X64-SSE-NEXT: xorps %xmm4, %xmm2 449; X64-SSE-NEXT: xorps %xmm4, %xmm3 450; X64-SSE-NEXT: retq 451; 452; X64-AVX-LABEL: fneg_v8f64: 453; X64-AVX: # %bb.0: 454; X64-AVX-NEXT: vbroadcastsd {{.*#+}} ymm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 455; X64-AVX-NEXT: vxorps %ymm2, %ymm0, %ymm0 456; X64-AVX-NEXT: vxorps %ymm2, %ymm1, %ymm1 457; X64-AVX-NEXT: retq 458; 459; X64-AVX512VL-LABEL: fneg_v8f64: 460; X64-AVX512VL: # %bb.0: 461; X64-AVX512VL-NEXT: vpxorq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0 462; X64-AVX512VL-NEXT: retq 463; 464; X64-AVX512FP16-LABEL: fneg_v8f64: 465; X64-AVX512FP16: # %bb.0: 466; X64-AVX512FP16-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0 467; X64-AVX512FP16-NEXT: retq 468; 469; X64-AVX512VLDQ-LABEL: fneg_v8f64: 470; X64-AVX512VLDQ: # %bb.0: 471; X64-AVX512VLDQ-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %zmm0, %zmm0 472; X64-AVX512VLDQ-NEXT: retq 473 %t = fsub <8 x double> <double -0.0, double -0.0, double -0.0, double -0.0, double -0.0, double -0.0, double -0.0, double -0.0>, %p 474 ret <8 x double> %t 475} 476 477define <16 x float> @fneg_v16f32(<16 x float> %p) nounwind { 478; X86-SSE-LABEL: fneg_v16f32: 479; X86-SSE: # %bb.0: 480; X86-SSE-NEXT: pushl %ebp 481; X86-SSE-NEXT: movl %esp, %ebp 482; X86-SSE-NEXT: andl $-16, %esp 483; X86-SSE-NEXT: subl $16, %esp 484; X86-SSE-NEXT: movaps {{.*#+}} xmm3 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 485; X86-SSE-NEXT: xorps %xmm3, %xmm0 486; X86-SSE-NEXT: xorps %xmm3, %xmm1 487; X86-SSE-NEXT: xorps %xmm3, %xmm2 488; X86-SSE-NEXT: xorps 8(%ebp), %xmm3 489; X86-SSE-NEXT: movl %ebp, %esp 490; X86-SSE-NEXT: popl %ebp 491; X86-SSE-NEXT: retl 492; 493; X86-AVX-LABEL: fneg_v16f32: 494; X86-AVX: # %bb.0: 495; X86-AVX-NEXT: vbroadcastss {{.*#+}} ymm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 496; X86-AVX-NEXT: vxorps %ymm2, %ymm0, %ymm0 497; X86-AVX-NEXT: vxorps %ymm2, %ymm1, %ymm1 498; X86-AVX-NEXT: retl 499; 500; X86-AVX512VL-LABEL: fneg_v16f32: 501; X86-AVX512VL: # %bb.0: 502; X86-AVX512VL-NEXT: vpxord {{\.?LCPI[0-9]+_[0-9]+}}{1to16}, %zmm0, %zmm0 503; X86-AVX512VL-NEXT: retl 504; 505; X86-AVX512FP16-LABEL: fneg_v16f32: 506; X86-AVX512FP16: # %bb.0: 507; X86-AVX512FP16-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}{1to16}, %zmm0, %zmm0 508; X86-AVX512FP16-NEXT: retl 509; 510; X86-AVX512VLDQ-LABEL: fneg_v16f32: 511; X86-AVX512VLDQ: # %bb.0: 512; X86-AVX512VLDQ-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}{1to16}, %zmm0, %zmm0 513; X86-AVX512VLDQ-NEXT: retl 514; 515; X64-SSE-LABEL: fneg_v16f32: 516; X64-SSE: # %bb.0: 517; X64-SSE-NEXT: movaps {{.*#+}} xmm4 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 518; X64-SSE-NEXT: xorps %xmm4, %xmm0 519; X64-SSE-NEXT: xorps %xmm4, %xmm1 520; X64-SSE-NEXT: xorps %xmm4, %xmm2 521; X64-SSE-NEXT: xorps %xmm4, %xmm3 522; X64-SSE-NEXT: retq 523; 524; X64-AVX-LABEL: fneg_v16f32: 525; X64-AVX: # %bb.0: 526; X64-AVX-NEXT: vbroadcastss {{.*#+}} ymm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 527; X64-AVX-NEXT: vxorps %ymm2, %ymm0, %ymm0 528; X64-AVX-NEXT: vxorps %ymm2, %ymm1, %ymm1 529; X64-AVX-NEXT: retq 530; 531; X64-AVX512VL-LABEL: fneg_v16f32: 532; X64-AVX512VL: # %bb.0: 533; X64-AVX512VL-NEXT: vpxord {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm0 534; X64-AVX512VL-NEXT: retq 535; 536; X64-AVX512FP16-LABEL: fneg_v16f32: 537; X64-AVX512FP16: # %bb.0: 538; X64-AVX512FP16-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm0 539; X64-AVX512FP16-NEXT: retq 540; 541; X64-AVX512VLDQ-LABEL: fneg_v16f32: 542; X64-AVX512VLDQ: # %bb.0: 543; X64-AVX512VLDQ-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm0 544; X64-AVX512VLDQ-NEXT: retq 545 %t = fsub <16 x float> <float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0, float -0.0>, %p 546 ret <16 x float> %t 547} 548 549define <32 x half> @fneg_v32f16(ptr %p) nounwind { 550; X86-SSE-LABEL: fneg_v32f16: 551; X86-SSE: # %bb.0: 552; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax 553; X86-SSE-NEXT: movaps {{.*#+}} xmm3 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 554; X86-SSE-NEXT: movaps (%eax), %xmm0 555; X86-SSE-NEXT: xorps %xmm3, %xmm0 556; X86-SSE-NEXT: movaps 16(%eax), %xmm1 557; X86-SSE-NEXT: xorps %xmm3, %xmm1 558; X86-SSE-NEXT: movaps 32(%eax), %xmm2 559; X86-SSE-NEXT: xorps %xmm3, %xmm2 560; X86-SSE-NEXT: xorps 48(%eax), %xmm3 561; X86-SSE-NEXT: retl 562; 563; X86-AVX1-LABEL: fneg_v32f16: 564; X86-AVX1: # %bb.0: 565; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax 566; X86-AVX1-NEXT: vbroadcastss {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 567; X86-AVX1-NEXT: vxorps (%eax), %ymm1, %ymm0 568; X86-AVX1-NEXT: vxorps 32(%eax), %ymm1, %ymm1 569; X86-AVX1-NEXT: retl 570; 571; X86-AVX2-LABEL: fneg_v32f16: 572; X86-AVX2: # %bb.0: 573; X86-AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 574; X86-AVX2-NEXT: vpbroadcastw {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 575; X86-AVX2-NEXT: vpxor (%eax), %ymm1, %ymm0 576; X86-AVX2-NEXT: vpxor 32(%eax), %ymm1, %ymm1 577; X86-AVX2-NEXT: retl 578; 579; X86-AVX512VL-LABEL: fneg_v32f16: 580; X86-AVX512VL: # %bb.0: 581; X86-AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 582; X86-AVX512VL-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 583; X86-AVX512VL-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0 584; X86-AVX512VL-NEXT: vpxorq (%eax), %zmm0, %zmm0 585; X86-AVX512VL-NEXT: retl 586; 587; X86-AVX512FP16-LABEL: fneg_v32f16: 588; X86-AVX512FP16: # %bb.0: 589; X86-AVX512FP16-NEXT: movl {{[0-9]+}}(%esp), %eax 590; X86-AVX512FP16-NEXT: vpbroadcastw {{.*#+}} zmm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 591; X86-AVX512FP16-NEXT: vpxorq (%eax), %zmm0, %zmm0 592; X86-AVX512FP16-NEXT: retl 593; 594; X86-AVX512VLDQ-LABEL: fneg_v32f16: 595; X86-AVX512VLDQ: # %bb.0: 596; X86-AVX512VLDQ-NEXT: movl {{[0-9]+}}(%esp), %eax 597; X86-AVX512VLDQ-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 598; X86-AVX512VLDQ-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0 599; X86-AVX512VLDQ-NEXT: vpxorq (%eax), %zmm0, %zmm0 600; X86-AVX512VLDQ-NEXT: retl 601; 602; X64-SSE-LABEL: fneg_v32f16: 603; X64-SSE: # %bb.0: 604; X64-SSE-NEXT: movaps {{.*#+}} xmm3 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 605; X64-SSE-NEXT: movaps (%rdi), %xmm0 606; X64-SSE-NEXT: xorps %xmm3, %xmm0 607; X64-SSE-NEXT: movaps 16(%rdi), %xmm1 608; X64-SSE-NEXT: xorps %xmm3, %xmm1 609; X64-SSE-NEXT: movaps 32(%rdi), %xmm2 610; X64-SSE-NEXT: xorps %xmm3, %xmm2 611; X64-SSE-NEXT: xorps 48(%rdi), %xmm3 612; X64-SSE-NEXT: retq 613; 614; X64-AVX1-LABEL: fneg_v32f16: 615; X64-AVX1: # %bb.0: 616; X64-AVX1-NEXT: vbroadcastss {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 617; X64-AVX1-NEXT: vxorps (%rdi), %ymm1, %ymm0 618; X64-AVX1-NEXT: vxorps 32(%rdi), %ymm1, %ymm1 619; X64-AVX1-NEXT: retq 620; 621; X64-AVX2-LABEL: fneg_v32f16: 622; X64-AVX2: # %bb.0: 623; X64-AVX2-NEXT: vpbroadcastw {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 624; X64-AVX2-NEXT: vpxor (%rdi), %ymm1, %ymm0 625; X64-AVX2-NEXT: vpxor 32(%rdi), %ymm1, %ymm1 626; X64-AVX2-NEXT: retq 627; 628; X64-AVX512VL-LABEL: fneg_v32f16: 629; X64-AVX512VL: # %bb.0: 630; X64-AVX512VL-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 631; X64-AVX512VL-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0 632; X64-AVX512VL-NEXT: vpxorq (%rdi), %zmm0, %zmm0 633; X64-AVX512VL-NEXT: retq 634; 635; X64-AVX512FP16-LABEL: fneg_v32f16: 636; X64-AVX512FP16: # %bb.0: 637; X64-AVX512FP16-NEXT: vpbroadcastw {{.*#+}} zmm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 638; X64-AVX512FP16-NEXT: vpxorq (%rdi), %zmm0, %zmm0 639; X64-AVX512FP16-NEXT: retq 640; 641; X64-AVX512VLDQ-LABEL: fneg_v32f16: 642; X64-AVX512VLDQ: # %bb.0: 643; X64-AVX512VLDQ-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] 644; X64-AVX512VLDQ-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0 645; X64-AVX512VLDQ-NEXT: vpxorq (%rdi), %zmm0, %zmm0 646; X64-AVX512VLDQ-NEXT: retq 647 %v = load <32 x half>, ptr %p, align 16 648 %nnv = fsub <32 x half> <half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0, half -0.0>, %v 649 ret <32 x half> %nnv 650} 651;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 652; X64: {{.*}} 653; X86: {{.*}} 654