123 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=aarch64-unknown-unknown < %s -o -| FileCheck %s3 4define i1 @lsr_1_ne_0_16(i16 %x) {5; CHECK-LABEL: lsr_1_ne_0_16:6; CHECK: // %bb.0:7; CHECK-NEXT: tst w0, #0xfffe8; CHECK-NEXT: cset w0, ne9; CHECK-NEXT: ret10 %shr = lshr i16 %x, 111 %cmp = icmp ne i16 %shr, 012 ret i1 %cmp13}14 15define i1 @lsr_1_ne_0_32(i32 %x) {16; CHECK-LABEL: lsr_1_ne_0_32:17; CHECK: // %bb.0:18; CHECK-NEXT: tst w0, #0xfffffffe19; CHECK-NEXT: cset w0, ne20; CHECK-NEXT: ret21 %shr = lshr i32 %x, 122 %cmp = icmp ne i32 %shr, 023 ret i1 %cmp24}25 26define i1 @lsr_30_ne_0_32(i32 %x) {27; CHECK-LABEL: lsr_30_ne_0_32:28; CHECK: // %bb.0:29; CHECK-NEXT: tst w0, #0xc000000030; CHECK-NEXT: cset w0, ne31; CHECK-NEXT: ret32 %shr = lshr i32 %x, 3033 %cmp = icmp ne i32 %shr, 034 ret i1 %cmp35}36 37define i1 @lsr_31_ne_0_32(i32 %x) {38; CHECK-LABEL: lsr_31_ne_0_32:39; CHECK: // %bb.0:40; CHECK-NEXT: lsr w0, w0, #3141; CHECK-NEXT: ret42 %shr = lshr i32 %x, 3143 %cmp = icmp ne i32 %shr, 044 ret i1 %cmp45}46 47define i1 @lsr_1_ne_0_64(i64 %x) {48; CHECK-LABEL: lsr_1_ne_0_64:49; CHECK: // %bb.0:50; CHECK-NEXT: tst x0, #0xfffffffffffffffe51; CHECK-NEXT: cset w0, ne52; CHECK-NEXT: ret53 %shr = lshr i64 %x, 154 %cmp = icmp ne i64 %shr, 055 ret i1 %cmp56}57 58define i1 @lsr_31_ne_0_64(i64 %x) {59; CHECK-LABEL: lsr_31_ne_0_64:60; CHECK: // %bb.0:61; CHECK-NEXT: tst x0, #0xffffffff8000000062; CHECK-NEXT: cset w0, ne63; CHECK-NEXT: ret64 %shr = lshr i64 %x, 3165 %cmp = icmp ne i64 %shr, 066 ret i1 %cmp67}68 69define i1 @lsr_32_ne_0_64(i64 %x) {70; CHECK-LABEL: lsr_32_ne_0_64:71; CHECK: // %bb.0:72; CHECK-NEXT: tst x0, #0xffffffff0000000073; CHECK-NEXT: cset w0, ne74; CHECK-NEXT: ret75 %shr = lshr i64 %x, 3276 %cmp = icmp ne i64 %shr, 077 ret i1 %cmp78}79 80define i1 @lsr_33_ne_0_64(i64 %x) {81; CHECK-LABEL: lsr_33_ne_0_64:82; CHECK: // %bb.0:83; CHECK-NEXT: tst x0, #0xfffffffe0000000084; CHECK-NEXT: cset w0, ne85; CHECK-NEXT: ret86 %shr = lshr i64 %x, 3387 %cmp = icmp ne i64 %shr, 088 ret i1 %cmp89}90 91define i1 @lsr_62_ne_0_64(i64 %x) {92; CHECK-LABEL: lsr_62_ne_0_64:93; CHECK: // %bb.0:94; CHECK-NEXT: tst x0, #0xc00000000000000095; CHECK-NEXT: cset w0, ne96; CHECK-NEXT: ret97 %shr = lshr i64 %x, 6298 %cmp = icmp ne i64 %shr, 099 ret i1 %cmp100}101 102define i1 @lsr_63_ne_0_64(i64 %x) {103; CHECK-LABEL: lsr_63_ne_0_64:104; CHECK: // %bb.0:105; CHECK-NEXT: lsr x0, x0, #63106; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0107; CHECK-NEXT: ret108 %shr = lshr i64 %x, 63109 %cmp = icmp ne i64 %shr, 0110 ret i1 %cmp111}112 113define <4 x i1> @lsr_1_ne_0_v4i16(<4 x i16> %x) {114; CHECK-LABEL: lsr_1_ne_0_v4i16:115; CHECK: // %bb.0:116; CHECK-NEXT: ushr v0.4h, v0.4h, #1117; CHECK-NEXT: cmtst v0.4h, v0.4h, v0.4h118; CHECK-NEXT: ret119 %shr = lshr <4 x i16> %x, <i16 1, i16 1, i16 1, i16 1>120 %cmp = icmp ne <4 x i16> %shr, <i16 0, i16 0, i16 0, i16 0>121 ret <4 x i1> %cmp122}123