1995835feSPoseydon42; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 22d2d6853SThorsten Schütt; RUN: llc -mtriple=aarch64 -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SD 3823eab2bSDavid Green; RUN: llc -mtriple=aarch64 -global-isel -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-GI 4995835feSPoseydon42 5995835feSPoseydon42define i8 @scmp.8.8(i8 %x, i8 %y) nounwind { 62d2d6853SThorsten Schütt; CHECK-SD-LABEL: scmp.8.8: 72d2d6853SThorsten Schütt; CHECK-SD: // %bb.0: 82d2d6853SThorsten Schütt; CHECK-SD-NEXT: sxtb w8, w0 92d2d6853SThorsten Schütt; CHECK-SD-NEXT: cmp w8, w1, sxtb 102d2d6853SThorsten Schütt; CHECK-SD-NEXT: cset w8, gt 112d2d6853SThorsten Schütt; CHECK-SD-NEXT: csinv w0, w8, wzr, ge 122d2d6853SThorsten Schütt; CHECK-SD-NEXT: ret 132d2d6853SThorsten Schütt; 142d2d6853SThorsten Schütt; CHECK-GI-LABEL: scmp.8.8: 152d2d6853SThorsten Schütt; CHECK-GI: // %bb.0: 162d2d6853SThorsten Schütt; CHECK-GI-NEXT: sxtb w8, w0 172d2d6853SThorsten Schütt; CHECK-GI-NEXT: sxtb w9, w1 182d2d6853SThorsten Schütt; CHECK-GI-NEXT: cmp w8, w9 192d2d6853SThorsten Schütt; CHECK-GI-NEXT: cset w8, gt 202d2d6853SThorsten Schütt; CHECK-GI-NEXT: csinv w0, w8, wzr, ge 212d2d6853SThorsten Schütt; CHECK-GI-NEXT: ret 22995835feSPoseydon42 %1 = call i8 @llvm.scmp(i8 %x, i8 %y) 23995835feSPoseydon42 ret i8 %1 24995835feSPoseydon42} 25995835feSPoseydon42 26995835feSPoseydon42define i8 @scmp.8.16(i16 %x, i16 %y) nounwind { 272d2d6853SThorsten Schütt; CHECK-SD-LABEL: scmp.8.16: 282d2d6853SThorsten Schütt; CHECK-SD: // %bb.0: 292d2d6853SThorsten Schütt; CHECK-SD-NEXT: sxth w8, w0 302d2d6853SThorsten Schütt; CHECK-SD-NEXT: cmp w8, w1, sxth 312d2d6853SThorsten Schütt; CHECK-SD-NEXT: cset w8, gt 322d2d6853SThorsten Schütt; CHECK-SD-NEXT: csinv w0, w8, wzr, ge 332d2d6853SThorsten Schütt; CHECK-SD-NEXT: ret 342d2d6853SThorsten Schütt; 352d2d6853SThorsten Schütt; CHECK-GI-LABEL: scmp.8.16: 362d2d6853SThorsten Schütt; CHECK-GI: // %bb.0: 372d2d6853SThorsten Schütt; CHECK-GI-NEXT: sxth w8, w0 382d2d6853SThorsten Schütt; CHECK-GI-NEXT: sxth w9, w1 392d2d6853SThorsten Schütt; CHECK-GI-NEXT: cmp w8, w9 402d2d6853SThorsten Schütt; CHECK-GI-NEXT: cset w8, gt 412d2d6853SThorsten Schütt; CHECK-GI-NEXT: csinv w0, w8, wzr, ge 422d2d6853SThorsten Schütt; CHECK-GI-NEXT: ret 43995835feSPoseydon42 %1 = call i8 @llvm.scmp(i16 %x, i16 %y) 44995835feSPoseydon42 ret i8 %1 45995835feSPoseydon42} 46995835feSPoseydon42 47995835feSPoseydon42define i8 @scmp.8.32(i32 %x, i32 %y) nounwind { 48995835feSPoseydon42; CHECK-LABEL: scmp.8.32: 49995835feSPoseydon42; CHECK: // %bb.0: 50995835feSPoseydon42; CHECK-NEXT: cmp w0, w1 51995835feSPoseydon42; CHECK-NEXT: cset w8, gt 52995835feSPoseydon42; CHECK-NEXT: csinv w0, w8, wzr, ge 53995835feSPoseydon42; CHECK-NEXT: ret 54995835feSPoseydon42 %1 = call i8 @llvm.scmp(i32 %x, i32 %y) 55995835feSPoseydon42 ret i8 %1 56995835feSPoseydon42} 57995835feSPoseydon42 58995835feSPoseydon42define i8 @scmp.8.64(i64 %x, i64 %y) nounwind { 59995835feSPoseydon42; CHECK-LABEL: scmp.8.64: 60995835feSPoseydon42; CHECK: // %bb.0: 61995835feSPoseydon42; CHECK-NEXT: cmp x0, x1 62995835feSPoseydon42; CHECK-NEXT: cset w8, gt 63995835feSPoseydon42; CHECK-NEXT: csinv w0, w8, wzr, ge 64995835feSPoseydon42; CHECK-NEXT: ret 65995835feSPoseydon42 %1 = call i8 @llvm.scmp(i64 %x, i64 %y) 66995835feSPoseydon42 ret i8 %1 67995835feSPoseydon42} 68995835feSPoseydon42 69995835feSPoseydon42define i8 @scmp.8.128(i128 %x, i128 %y) nounwind { 702d2d6853SThorsten Schütt; CHECK-SD-LABEL: scmp.8.128: 712d2d6853SThorsten Schütt; CHECK-SD: // %bb.0: 722d2d6853SThorsten Schütt; CHECK-SD-NEXT: cmp x2, x0 732d2d6853SThorsten Schütt; CHECK-SD-NEXT: sbcs xzr, x3, x1 742d2d6853SThorsten Schütt; CHECK-SD-NEXT: cset w8, lt 752d2d6853SThorsten Schütt; CHECK-SD-NEXT: cmp x0, x2 762d2d6853SThorsten Schütt; CHECK-SD-NEXT: sbcs xzr, x1, x3 772d2d6853SThorsten Schütt; CHECK-SD-NEXT: csinv w0, w8, wzr, ge 782d2d6853SThorsten Schütt; CHECK-SD-NEXT: ret 792d2d6853SThorsten Schütt; 802d2d6853SThorsten Schütt; CHECK-GI-LABEL: scmp.8.128: 812d2d6853SThorsten Schütt; CHECK-GI: // %bb.0: 822d2d6853SThorsten Schütt; CHECK-GI-NEXT: cmp x0, x2 837ece560aSCraig Topper; CHECK-GI-NEXT: cset w8, hi 842d2d6853SThorsten Schütt; CHECK-GI-NEXT: cmp x1, x3 857ece560aSCraig Topper; CHECK-GI-NEXT: cset w9, gt 867ece560aSCraig Topper; CHECK-GI-NEXT: csel w8, w8, w9, eq 872d2d6853SThorsten Schütt; CHECK-GI-NEXT: cmp x0, x2 887ece560aSCraig Topper; CHECK-GI-NEXT: cset w9, lo 892d2d6853SThorsten Schütt; CHECK-GI-NEXT: cmp x1, x3 907ece560aSCraig Topper; CHECK-GI-NEXT: cset w10, lt 917ece560aSCraig Topper; CHECK-GI-NEXT: csel w9, w9, w10, eq 92*de1a423cSCraig Topper; CHECK-GI-NEXT: tst w8, #0x1 93*de1a423cSCraig Topper; CHECK-GI-NEXT: cset w8, ne 942d2d6853SThorsten Schütt; CHECK-GI-NEXT: tst w9, #0x1 952d2d6853SThorsten Schütt; CHECK-GI-NEXT: csinv w0, w8, wzr, eq 962d2d6853SThorsten Schütt; CHECK-GI-NEXT: ret 97995835feSPoseydon42 %1 = call i8 @llvm.scmp(i128 %x, i128 %y) 98995835feSPoseydon42 ret i8 %1 99995835feSPoseydon42} 100995835feSPoseydon42 101995835feSPoseydon42define i32 @scmp.32.32(i32 %x, i32 %y) nounwind { 102995835feSPoseydon42; CHECK-LABEL: scmp.32.32: 103995835feSPoseydon42; CHECK: // %bb.0: 104995835feSPoseydon42; CHECK-NEXT: cmp w0, w1 105995835feSPoseydon42; CHECK-NEXT: cset w8, gt 106995835feSPoseydon42; CHECK-NEXT: csinv w0, w8, wzr, ge 107995835feSPoseydon42; CHECK-NEXT: ret 108995835feSPoseydon42 %1 = call i32 @llvm.scmp(i32 %x, i32 %y) 109995835feSPoseydon42 ret i32 %1 110995835feSPoseydon42} 111995835feSPoseydon42 112995835feSPoseydon42define i32 @scmp.32.64(i64 %x, i64 %y) nounwind { 113995835feSPoseydon42; CHECK-LABEL: scmp.32.64: 114995835feSPoseydon42; CHECK: // %bb.0: 115995835feSPoseydon42; CHECK-NEXT: cmp x0, x1 116995835feSPoseydon42; CHECK-NEXT: cset w8, gt 117995835feSPoseydon42; CHECK-NEXT: csinv w0, w8, wzr, ge 118995835feSPoseydon42; CHECK-NEXT: ret 119995835feSPoseydon42 %1 = call i32 @llvm.scmp(i64 %x, i64 %y) 120995835feSPoseydon42 ret i32 %1 121995835feSPoseydon42} 122995835feSPoseydon42 123995835feSPoseydon42define i64 @scmp.64.64(i64 %x, i64 %y) nounwind { 124995835feSPoseydon42; CHECK-LABEL: scmp.64.64: 125995835feSPoseydon42; CHECK: // %bb.0: 126995835feSPoseydon42; CHECK-NEXT: cmp x0, x1 127995835feSPoseydon42; CHECK-NEXT: cset x8, gt 128995835feSPoseydon42; CHECK-NEXT: csinv x0, x8, xzr, ge 129995835feSPoseydon42; CHECK-NEXT: ret 130995835feSPoseydon42 %1 = call i64 @llvm.scmp(i64 %x, i64 %y) 131995835feSPoseydon42 ret i64 %1 132995835feSPoseydon42} 133823eab2bSDavid Green 134823eab2bSDavid Greendefine <8 x i8> @s_v8i8(<8 x i8> %a, <8 x i8> %b) { 135*de1a423cSCraig Topper; CHECK-LABEL: s_v8i8: 136*de1a423cSCraig Topper; CHECK: // %bb.0: // %entry 137*de1a423cSCraig Topper; CHECK-NEXT: cmgt v2.8b, v0.8b, v1.8b 138*de1a423cSCraig Topper; CHECK-NEXT: cmgt v0.8b, v1.8b, v0.8b 139*de1a423cSCraig Topper; CHECK-NEXT: sub v0.8b, v0.8b, v2.8b 140*de1a423cSCraig Topper; CHECK-NEXT: ret 141823eab2bSDavid Greenentry: 142823eab2bSDavid Green %c = call <8 x i8> @llvm.scmp(<8 x i8> %a, <8 x i8> %b) 143823eab2bSDavid Green ret <8 x i8> %c 144823eab2bSDavid Green} 145823eab2bSDavid Green 146823eab2bSDavid Greendefine <16 x i8> @s_v16i8(<16 x i8> %a, <16 x i8> %b) { 147*de1a423cSCraig Topper; CHECK-LABEL: s_v16i8: 148*de1a423cSCraig Topper; CHECK: // %bb.0: // %entry 149*de1a423cSCraig Topper; CHECK-NEXT: cmgt v2.16b, v0.16b, v1.16b 150*de1a423cSCraig Topper; CHECK-NEXT: cmgt v0.16b, v1.16b, v0.16b 151*de1a423cSCraig Topper; CHECK-NEXT: sub v0.16b, v0.16b, v2.16b 152*de1a423cSCraig Topper; CHECK-NEXT: ret 153823eab2bSDavid Greenentry: 154823eab2bSDavid Green %c = call <16 x i8> @llvm.scmp(<16 x i8> %a, <16 x i8> %b) 155823eab2bSDavid Green ret <16 x i8> %c 156823eab2bSDavid Green} 157823eab2bSDavid Green 158823eab2bSDavid Greendefine <4 x i16> @s_v4i16(<4 x i16> %a, <4 x i16> %b) { 159*de1a423cSCraig Topper; CHECK-LABEL: s_v4i16: 160*de1a423cSCraig Topper; CHECK: // %bb.0: // %entry 161*de1a423cSCraig Topper; CHECK-NEXT: cmgt v2.4h, v0.4h, v1.4h 162*de1a423cSCraig Topper; CHECK-NEXT: cmgt v0.4h, v1.4h, v0.4h 163*de1a423cSCraig Topper; CHECK-NEXT: sub v0.4h, v0.4h, v2.4h 164*de1a423cSCraig Topper; CHECK-NEXT: ret 165823eab2bSDavid Greenentry: 166823eab2bSDavid Green %c = call <4 x i16> @llvm.scmp(<4 x i16> %a, <4 x i16> %b) 167823eab2bSDavid Green ret <4 x i16> %c 168823eab2bSDavid Green} 169823eab2bSDavid Green 170823eab2bSDavid Greendefine <8 x i16> @s_v8i16(<8 x i16> %a, <8 x i16> %b) { 171*de1a423cSCraig Topper; CHECK-LABEL: s_v8i16: 172*de1a423cSCraig Topper; CHECK: // %bb.0: // %entry 173*de1a423cSCraig Topper; CHECK-NEXT: cmgt v2.8h, v0.8h, v1.8h 174*de1a423cSCraig Topper; CHECK-NEXT: cmgt v0.8h, v1.8h, v0.8h 175*de1a423cSCraig Topper; CHECK-NEXT: sub v0.8h, v0.8h, v2.8h 176*de1a423cSCraig Topper; CHECK-NEXT: ret 177823eab2bSDavid Greenentry: 178823eab2bSDavid Green %c = call <8 x i16> @llvm.scmp(<8 x i16> %a, <8 x i16> %b) 179823eab2bSDavid Green ret <8 x i16> %c 180823eab2bSDavid Green} 181823eab2bSDavid Green 182823eab2bSDavid Greendefine <16 x i16> @s_v16i16(<16 x i16> %a, <16 x i16> %b) { 183823eab2bSDavid Green; CHECK-SD-LABEL: s_v16i16: 184823eab2bSDavid Green; CHECK-SD: // %bb.0: // %entry 185960c975aSDavid Green; CHECK-SD-NEXT: cmgt v4.8h, v1.8h, v3.8h 186823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v5.8h, v0.8h, v2.8h 187823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v0.8h, v2.8h, v0.8h 188823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v1.8h, v3.8h, v1.8h 189960c975aSDavid Green; CHECK-SD-NEXT: sub v0.8h, v0.8h, v5.8h 190960c975aSDavid Green; CHECK-SD-NEXT: sub v1.8h, v1.8h, v4.8h 191823eab2bSDavid Green; CHECK-SD-NEXT: ret 192823eab2bSDavid Green; 193823eab2bSDavid Green; CHECK-GI-LABEL: s_v16i16: 194823eab2bSDavid Green; CHECK-GI: // %bb.0: // %entry 195*de1a423cSCraig Topper; CHECK-GI-NEXT: cmgt v4.8h, v0.8h, v2.8h 196*de1a423cSCraig Topper; CHECK-GI-NEXT: cmgt v5.8h, v1.8h, v3.8h 197823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v0.8h, v2.8h, v0.8h 198823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v1.8h, v3.8h, v1.8h 199*de1a423cSCraig Topper; CHECK-GI-NEXT: sub v0.8h, v0.8h, v4.8h 200*de1a423cSCraig Topper; CHECK-GI-NEXT: sub v1.8h, v1.8h, v5.8h 201823eab2bSDavid Green; CHECK-GI-NEXT: ret 202823eab2bSDavid Greenentry: 203823eab2bSDavid Green %c = call <16 x i16> @llvm.scmp(<16 x i16> %a, <16 x i16> %b) 204823eab2bSDavid Green ret <16 x i16> %c 205823eab2bSDavid Green} 206823eab2bSDavid Green 207823eab2bSDavid Greendefine <2 x i32> @s_v2i32(<2 x i32> %a, <2 x i32> %b) { 208*de1a423cSCraig Topper; CHECK-LABEL: s_v2i32: 209*de1a423cSCraig Topper; CHECK: // %bb.0: // %entry 210*de1a423cSCraig Topper; CHECK-NEXT: cmgt v2.2s, v0.2s, v1.2s 211*de1a423cSCraig Topper; CHECK-NEXT: cmgt v0.2s, v1.2s, v0.2s 212*de1a423cSCraig Topper; CHECK-NEXT: sub v0.2s, v0.2s, v2.2s 213*de1a423cSCraig Topper; CHECK-NEXT: ret 214823eab2bSDavid Greenentry: 215823eab2bSDavid Green %c = call <2 x i32> @llvm.scmp(<2 x i32> %a, <2 x i32> %b) 216823eab2bSDavid Green ret <2 x i32> %c 217823eab2bSDavid Green} 218823eab2bSDavid Green 219823eab2bSDavid Greendefine <4 x i32> @s_v4i32(<4 x i32> %a, <4 x i32> %b) { 220*de1a423cSCraig Topper; CHECK-LABEL: s_v4i32: 221*de1a423cSCraig Topper; CHECK: // %bb.0: // %entry 222*de1a423cSCraig Topper; CHECK-NEXT: cmgt v2.4s, v0.4s, v1.4s 223*de1a423cSCraig Topper; CHECK-NEXT: cmgt v0.4s, v1.4s, v0.4s 224*de1a423cSCraig Topper; CHECK-NEXT: sub v0.4s, v0.4s, v2.4s 225*de1a423cSCraig Topper; CHECK-NEXT: ret 226823eab2bSDavid Greenentry: 227823eab2bSDavid Green %c = call <4 x i32> @llvm.scmp(<4 x i32> %a, <4 x i32> %b) 228823eab2bSDavid Green ret <4 x i32> %c 229823eab2bSDavid Green} 230823eab2bSDavid Green 231823eab2bSDavid Greendefine <8 x i32> @s_v8i32(<8 x i32> %a, <8 x i32> %b) { 232823eab2bSDavid Green; CHECK-SD-LABEL: s_v8i32: 233823eab2bSDavid Green; CHECK-SD: // %bb.0: // %entry 234960c975aSDavid Green; CHECK-SD-NEXT: cmgt v4.4s, v1.4s, v3.4s 235823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v5.4s, v0.4s, v2.4s 236823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v0.4s, v2.4s, v0.4s 237823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v1.4s, v3.4s, v1.4s 238960c975aSDavid Green; CHECK-SD-NEXT: sub v0.4s, v0.4s, v5.4s 239960c975aSDavid Green; CHECK-SD-NEXT: sub v1.4s, v1.4s, v4.4s 240823eab2bSDavid Green; CHECK-SD-NEXT: ret 241823eab2bSDavid Green; 242823eab2bSDavid Green; CHECK-GI-LABEL: s_v8i32: 243823eab2bSDavid Green; CHECK-GI: // %bb.0: // %entry 244*de1a423cSCraig Topper; CHECK-GI-NEXT: cmgt v4.4s, v0.4s, v2.4s 245*de1a423cSCraig Topper; CHECK-GI-NEXT: cmgt v5.4s, v1.4s, v3.4s 246823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v0.4s, v2.4s, v0.4s 247823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v1.4s, v3.4s, v1.4s 248*de1a423cSCraig Topper; CHECK-GI-NEXT: sub v0.4s, v0.4s, v4.4s 249*de1a423cSCraig Topper; CHECK-GI-NEXT: sub v1.4s, v1.4s, v5.4s 250823eab2bSDavid Green; CHECK-GI-NEXT: ret 251823eab2bSDavid Greenentry: 252823eab2bSDavid Green %c = call <8 x i32> @llvm.scmp(<8 x i32> %a, <8 x i32> %b) 253823eab2bSDavid Green ret <8 x i32> %c 254823eab2bSDavid Green} 255823eab2bSDavid Green 256823eab2bSDavid Greendefine <2 x i64> @s_v2i64(<2 x i64> %a, <2 x i64> %b) { 257*de1a423cSCraig Topper; CHECK-LABEL: s_v2i64: 258*de1a423cSCraig Topper; CHECK: // %bb.0: // %entry 259*de1a423cSCraig Topper; CHECK-NEXT: cmgt v2.2d, v0.2d, v1.2d 260*de1a423cSCraig Topper; CHECK-NEXT: cmgt v0.2d, v1.2d, v0.2d 261*de1a423cSCraig Topper; CHECK-NEXT: sub v0.2d, v0.2d, v2.2d 262*de1a423cSCraig Topper; CHECK-NEXT: ret 263823eab2bSDavid Greenentry: 264823eab2bSDavid Green %c = call <2 x i64> @llvm.scmp(<2 x i64> %a, <2 x i64> %b) 265823eab2bSDavid Green ret <2 x i64> %c 266823eab2bSDavid Green} 267823eab2bSDavid Green 268823eab2bSDavid Greendefine <4 x i64> @s_v4i64(<4 x i64> %a, <4 x i64> %b) { 269823eab2bSDavid Green; CHECK-SD-LABEL: s_v4i64: 270823eab2bSDavid Green; CHECK-SD: // %bb.0: // %entry 271960c975aSDavid Green; CHECK-SD-NEXT: cmgt v4.2d, v1.2d, v3.2d 272960c975aSDavid Green; CHECK-SD-NEXT: cmgt v5.2d, v0.2d, v2.2d 273823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v0.2d, v2.2d, v0.2d 274823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v1.2d, v3.2d, v1.2d 275960c975aSDavid Green; CHECK-SD-NEXT: sub v0.2d, v0.2d, v5.2d 276960c975aSDavid Green; CHECK-SD-NEXT: sub v1.2d, v1.2d, v4.2d 277823eab2bSDavid Green; CHECK-SD-NEXT: ret 278823eab2bSDavid Green; 279823eab2bSDavid Green; CHECK-GI-LABEL: s_v4i64: 280823eab2bSDavid Green; CHECK-GI: // %bb.0: // %entry 281823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v4.2d, v0.2d, v2.2d 282*de1a423cSCraig Topper; CHECK-GI-NEXT: cmgt v5.2d, v1.2d, v3.2d 283823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v0.2d, v2.2d, v0.2d 284823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v1.2d, v3.2d, v1.2d 285*de1a423cSCraig Topper; CHECK-GI-NEXT: sub v0.2d, v0.2d, v4.2d 286*de1a423cSCraig Topper; CHECK-GI-NEXT: sub v1.2d, v1.2d, v5.2d 287823eab2bSDavid Green; CHECK-GI-NEXT: ret 288823eab2bSDavid Greenentry: 289823eab2bSDavid Green %c = call <4 x i64> @llvm.scmp(<4 x i64> %a, <4 x i64> %b) 290823eab2bSDavid Green ret <4 x i64> %c 291823eab2bSDavid Green} 292823eab2bSDavid Green 293823eab2bSDavid Greendefine <16 x i8> @signOf_neon_scmp(<8 x i16> %s0_lo, <8 x i16> %s0_hi, <8 x i16> %s1_lo, <8 x i16> %s1_hi) { 294823eab2bSDavid Green; CHECK-SD-LABEL: signOf_neon_scmp: 295823eab2bSDavid Green; CHECK-SD: // %bb.0: // %entry 296823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v4.8h, v1.8h, v3.8h 297823eab2bSDavid Green; CHECK-SD-NEXT: cmgt v1.8h, v3.8h, v1.8h 298960c975aSDavid Green; CHECK-SD-NEXT: cmgt v3.8h, v0.8h, v2.8h 299960c975aSDavid Green; CHECK-SD-NEXT: cmgt v0.8h, v2.8h, v0.8h 300960c975aSDavid Green; CHECK-SD-NEXT: sub v1.8h, v1.8h, v4.8h 301960c975aSDavid Green; CHECK-SD-NEXT: sub v0.8h, v0.8h, v3.8h 302960c975aSDavid Green; CHECK-SD-NEXT: uzp1 v0.16b, v0.16b, v1.16b 303823eab2bSDavid Green; CHECK-SD-NEXT: ret 304823eab2bSDavid Green; 305823eab2bSDavid Green; CHECK-GI-LABEL: signOf_neon_scmp: 306823eab2bSDavid Green; CHECK-GI: // %bb.0: // %entry 307823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v4.8h, v0.8h, v2.8h 308823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v5.8h, v1.8h, v3.8h 309823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v0.8h, v2.8h, v0.8h 310823eab2bSDavid Green; CHECK-GI-NEXT: cmgt v1.8h, v3.8h, v1.8h 311823eab2bSDavid Green; CHECK-GI-NEXT: uzp1 v0.16b, v0.16b, v1.16b 312*de1a423cSCraig Topper; CHECK-GI-NEXT: uzp1 v1.16b, v4.16b, v5.16b 313823eab2bSDavid Green; CHECK-GI-NEXT: shl v0.16b, v0.16b, #7 314*de1a423cSCraig Topper; CHECK-GI-NEXT: shl v1.16b, v1.16b, #7 315823eab2bSDavid Green; CHECK-GI-NEXT: sshr v0.16b, v0.16b, #7 316*de1a423cSCraig Topper; CHECK-GI-NEXT: sshr v1.16b, v1.16b, #7 317*de1a423cSCraig Topper; CHECK-GI-NEXT: sub v0.16b, v0.16b, v1.16b 318823eab2bSDavid Green; CHECK-GI-NEXT: ret 319823eab2bSDavid Greenentry: 320823eab2bSDavid Green %0 = shufflevector <8 x i16> %s0_lo, <8 x i16> %s0_hi, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 321823eab2bSDavid Green %1 = shufflevector <8 x i16> %s1_lo, <8 x i16> %s1_hi, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 322823eab2bSDavid Green %or.i = tail call <16 x i8> @llvm.scmp.v16i8.v16i16(<16 x i16> %0, <16 x i16> %1) 323823eab2bSDavid Green ret <16 x i8> %or.i 324823eab2bSDavid Green} 325