1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X64 3 4define i32 @neg_lshr_signbit(i32 %x) { 5; X64-LABEL: neg_lshr_signbit: 6; X64: # BB#0: 7; X64-NEXT: sarl $31, %edi 8; X64-NEXT: movl %edi, %eax 9; X64-NEXT: retq 10; 11 %sh = lshr i32 %x, 31 12 %neg = sub i32 0, %sh 13 ret i32 %neg 14} 15 16define i64 @neg_ashr_signbit(i64 %x) { 17; X64-LABEL: neg_ashr_signbit: 18; X64: # BB#0: 19; X64-NEXT: shrq $63, %rdi 20; X64-NEXT: movq %rdi, %rax 21; X64-NEXT: retq 22; 23 %sh = ashr i64 %x, 63 24 %neg = sub i64 0, %sh 25 ret i64 %neg 26} 27 28define <4 x i32> @neg_ashr_signbit_vec(<4 x i32> %x) { 29; X64-LABEL: neg_ashr_signbit_vec: 30; X64: # BB#0: 31; X64-NEXT: psrld $31, %xmm0 32; X64-NEXT: retq 33; 34 %sh = ashr <4 x i32> %x, <i32 31, i32 31, i32 31, i32 31> 35 %neg = sub <4 x i32> zeroinitializer, %sh 36 ret <4 x i32> %neg 37} 38 39define <8 x i16> @neg_lshr_signbit_vec(<8 x i16> %x) { 40; X64-LABEL: neg_lshr_signbit_vec: 41; X64: # BB#0: 42; X64-NEXT: psraw $15, %xmm0 43; X64-NEXT: retq 44; 45 %sh = lshr <8 x i16> %x, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15> 46 %neg = sub <8 x i16> zeroinitializer, %sh 47 ret <8 x i16> %neg 48} 49 50