Commit 32a4e672fd70d5d1f949ae6851dc39af4985f5a6

Authored by Josh Klontz
1 parent 8bde0803

more llvm code

sdk/plugins/llvm.cpp
... ... @@ -144,7 +144,28 @@ struct MatrixBuilder : public jit_matrix
144 144 setData(b->CreateCall(malloc, mallocArgs));
145 145 }
146 146  
  147 + Value *get(int mask) const { return b->CreateAnd(getHash(), constant(mask, 16)); }
  148 + void set(int value, int mask) const { setHash(b->CreateOr(b->CreateAnd(getHash(), constant(~mask, 16)), b->CreateAnd(constant(value, 16), constant(mask, 16)))); }
  149 + void setBit(bool on, int mask) const { on ? setHash(b->CreateOr(getHash(), constant(mask, 16))) : setHash(b->CreateAnd(getHash(), constant(~mask, 16))); }
  150 +
  151 + Value *bitsCode() const { return get(Bits); }
  152 + void setBitsCode(int bits) const { set(bits, Bits); }
  153 + Value *isFloatingCode() const { return get(Floating); }
  154 + void setFloatingCode(bool isFloating) const { if (isFloating) setSignedCode(true); setBit(isFloating, Floating); }
  155 + Value *isSignedCode() const { return get(Signed); }
  156 + void setSignedCode(bool isSigned) const { setBit(isSigned, Signed); }
  157 + Value *typeCode() const { return get(Bits + Floating + Signed); }
  158 + void setTypeCode(int type) const { set(type, Bits + Floating + Signed); }
  159 + Value *singleChannelCode() const { return get(SingleChannel); }
  160 + void setSingleChannelCode(bool singleChannel) const { setBit(singleChannel, SingleChannel); }
  161 + Value *singleColumnCode() const { return get(SingleColumn); }
  162 + void setSingleColumnCode(bool singleColumn) { setBit(singleColumn, SingleColumn); }
  163 + Value *singleRowCode() const { return get(SingleRow); }
  164 + void setSingleRowCode(bool singleRow) const { setBit(singleRow, SingleRow); }
  165 + Value *singleFrameCode() const { return get(SingleFrame); }
  166 + void setSingleFrameCode(bool singleFrame) const { setBit(singleFrame, SingleFrame); }
147 167 Value *elementsCode() const { return b->CreateMul(b->CreateMul(b->CreateMul(getChannels(), getColumns()), getRows()), getFrames()); }
  168 + Value *bytesCode() const { return b->CreateMul(b->CreateUDiv(bitsCode(), constant(8, 16)), elementsCode()); }
148 169  
149 170 Value *columnStep() const { Value *columnStep = getChannels(); columnStep->setName(name+"_cStep"); return columnStep; }
150 171 Value *rowStep() const { return b->CreateMul(getColumns(), columnStep(), name+"_rStep"); }
... ...
1   -Subproject commit 8f74266f98653627b04ae9a8e7f83d4dd63b4f5d
  1 +Subproject commit 6c90253585eb70dc3abf2b0d6ef9de5ade9f6950
... ...