Skip to content

Instantly share code, notes, and snippets.

@filcab
Created May 9, 2014 22:22
Show Gist options
  • Save filcab/98de991762306cd86033 to your computer and use it in GitHub Desktop.
Save filcab/98de991762306cd86033 to your computer and use it in GitHub Desktop.
initial selection DAG weirdness
LLVM IR:
define <8 x double> @vsel_double8(<8 x double> %v1, <8 x double> %v2) {
%vsel = select <8 x i1> <i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 false>, <8 x double> %v1, <8 x double> %v2
ret <8 x double> %vsel
}
$ llc -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -mattr=+avx -debug
=== vsel_double8
Initial selection DAG: BB#0 'vsel_double8:'
SelectionDAG has 25 nodes:
0x103511f20: ch = EntryToken
0x103840a50: i1 = Constant<-1>
0x103840b58: i1 = Constant<0>
0x103840a50: <multiple use>
0x103840b58: <multiple use>
0x103840b58: <multiple use>
0x103840b58: <multiple use>
0x103840a50: <multiple use>
0x103840b58: <multiple use>
0x103840b58: <multiple use>
0x103840b58: <multiple use>
0x103840c60: v8i1 = BUILD_VECTOR 0x103840a50, 0x103840b58, 0x103840b58, 0x103840b58, 0x103840a50, 0x103840b58, 0x103840b58, 0x103840b58 [ORD=2]
0x103511f20: <multiple use>
0x103840000: v4f64 = Register %vreg0
0x103840108: v4f64,ch = CopyFromReg 0x103511f20, 0x103840000 [ORD=1]
0x103511f20: <multiple use>
0x103840210: v4f64 = Register %vreg1
0x103840318: v4f64,ch = CopyFromReg 0x103511f20, 0x103840210 [ORD=1]
0x103840840: v8f64 = concat_vectors 0x103840108, 0x103840318 [ORD=1]
0x103511f20: <multiple use>
0x103840420: v4f64 = Register %vreg2
0x103840528: v4f64,ch = CopyFromReg 0x103511f20, 0x103840420 [ORD=1]
0x103511f20: <multiple use>
0x103840630: v4f64 = Register %vreg3
0x103840738: v4f64,ch = CopyFromReg 0x103511f20, 0x103840630 [ORD=1]
0x103840948: v8f64 = concat_vectors 0x103840528, 0x103840738 [ORD=1]
0x103840d68: v8f64 = vselect 0x103840c60, 0x103840840, 0x103840948 [ORD=2]
0x103842220: v4f64 = Register %YMM0
0x103511f20: <multiple use>
0x103842220: <multiple use>
0x103840d68: <multiple use>
0x103840e70: i64 = Constant<0>
0x103841e00: v4f64 = extract_subvector 0x103840d68, 0x103840e70 [ORD=3]
0x103842328: ch,glue = CopyToReg 0x103511f20, 0x103842220, 0x103841e00 [ORD=3]
0x103842430: v4f64 = Register %YMM1
0x103842328: <multiple use>
0x103842430: <multiple use>
0x103840d68: <multiple use>
0x103841f08: i64 = Constant<4>
0x103842010: v4f64 = extract_subvector 0x103840d68, 0x103841f08 [ORD=3]
0x103842328: <multiple use>
0x103842538: ch,glue = CopyToReg 0x103842328, 0x103842430, 0x103842010, 0x103842328:1 [ORD=3]
0x103842538: <multiple use>
0x103842118: i16 = TargetConstant<0>
0x103842220: <multiple use>
0x103842430: <multiple use>
0x103842538: <multiple use>
0x103842640: ch = X86ISD::RET_FLAG 0x103842538, 0x103842118, 0x103842220, 0x103842430, 0x103842538:1 [ORD=3]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment