1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 2; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefixes=SSE 3; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX 4; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f | FileCheck %s --check-prefixes=AVX 5 6define { <4 x i1>, <4 x i1> } @uaddo(<4 x i1> %a) { 7; SSE-LABEL: uaddo: 8; SSE: # %bb.0: 9; SSE-NEXT: movaps %xmm0, %xmm1 10; SSE-NEXT: xorps %xmm0, %xmm0 11; SSE-NEXT: retq 12; 13; AVX-LABEL: uaddo: 14; AVX: # %bb.0: 15; AVX-NEXT: vmovaps %xmm0, %xmm1 16; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 17; AVX-NEXT: retq 18 %f = call { <4 x i1>, <4 x i1> } @llvm.uadd.with.overflow.v4i1(<4 x i1> %a, <4 x i1> %a) 19 ret { <4 x i1>, <4 x i1> } %f 20} 21declare { <4 x i1>, <4 x i1> } @llvm.uadd.with.overflow.v4i1(<4 x i1>, <4 x i1>) 22 23define { <4 x i1>, <4 x i1> } @saddo(<4 x i1> %a) { 24; SSE-LABEL: saddo: 25; SSE: # %bb.0: 26; SSE-NEXT: movaps %xmm0, %xmm1 27; SSE-NEXT: xorps %xmm0, %xmm0 28; SSE-NEXT: retq 29; 30; AVX-LABEL: saddo: 31; AVX: # %bb.0: 32; AVX-NEXT: vmovaps %xmm0, %xmm1 33; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 34; AVX-NEXT: retq 35 %f = call { <4 x i1>, <4 x i1> } @llvm.sadd.with.overflow.v4i1(<4 x i1> %a, <4 x i1> %a) 36 ret { <4 x i1>, <4 x i1> } %f 37} 38declare { <4 x i1>, <4 x i1> } @llvm.sadd.with.overflow.v4i1(<4 x i1>, <4 x i1>) 39