Mercurial > hg > CbC > CbC_llvm
view test/CodeGen/X86/extractelement-index.ll @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | |
children | 1172e4bd9c6f |
line wrap: on
line source
; RUN: llc < %s -mtriple=x86_64-pc-linux | FileCheck %s -check-prefix=X64 ; RUN: llc < %s -mtriple=x86_64-pc-linux -mattr=+avx | FileCheck %s -check-prefix=AVX ; CHECK-LABEL: extractelement_index_1: define i8 @extractelement_index_1(<32 x i8> %a) nounwind { ; X64: movaps ; AVX: vpextrb $1 %b = extractelement <32 x i8> %a, i256 1 ret i8 %b } ; CHECK-LABEL: extractelement_index_2: define i32 @extractelement_index_2(<8 x i32> %a) nounwind { ; X64: pshufd ; AVX: vextractf128 $1 ; AVX-NEXT: vpextrd $3 %b = extractelement <8 x i32> %a, i64 7 ret i32 %b } ; CHECK-LABEL: extractelement_index_3: define i32 @extractelement_index_3(<8 x i32> %a) nounwind { ; CHECK-NOT: pextr %b = extractelement <8 x i32> %a, i64 15 ret i32 %b } ; CHECK-LABEL: extractelement_index_4: define i32 @extractelement_index_4(<8 x i32> %a) nounwind { ; X64: movd ; AVX: vextractf128 $1 ; AVX-NEXT: vmovd %b = extractelement <8 x i32> %a, i256 4 ret i32 %b } ; CHECK-LABEL: extractelement_index_5: define i8 @extractelement_index_5(<32 x i8> %a, i256 %i) nounwind { ; X64: movaps ; AVX: vmovaps %b = extractelement <32 x i8> %a, i256 %i ret i8 %b } ; CHECK-LABEL: extractelement_index_6: define i8 @extractelement_index_6(<32 x i8> %a) nounwind { ; CHECK-NOT: pextr %b = extractelement <32 x i8> %a, i256 -1 ret i8 %b }