Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Unified Diff: src/IceAssemblerARM32.h

Issue 1878943009: Subzero. ARM32. Vector casts. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Adds vcvt assembler lit tests. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/IceAssemblerARM32.cpp » ('j') | tests_lit/assembler/arm32/vcvt.f32.s32.ll » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceAssemblerARM32.h
diff --git a/src/IceAssemblerARM32.h b/src/IceAssemblerARM32.h
index 2b52a7b1390ef58a8ceab26979f1fa81e27632ee..b1ca928cfb533aaa04bfabd3bb9a70ec8ffce2c9 100644
--- a/src/IceAssemblerARM32.h
+++ b/src/IceAssemblerARM32.h
@@ -381,6 +381,14 @@ public:
// vcvt<c>.u32.f32
void vcvtus(const Operand *OpSd, const Operand *OpSm, CondARM32::Cond Cond);
+ void vcvtqsi(const Operand *OpQd, const Operand *OpQm);
+
+ void vcvtqsu(const Operand *OpQd, const Operand *OpQm);
+
+ void vcvtqis(const Operand *OpQd, const Operand *OpQm);
+
+ void vcvtqus(const Operand *OpQd, const Operand *OpQm);
+
void vdivd(const Operand *OpDd, const Operand *OpDn, const Operand *OpDm,
CondARM32::Cond Cond);
@@ -511,6 +519,15 @@ public:
void vshlqu(Type ElmtTy, const Operand *OpQd, const Operand *OpQm,
const Operand *OpQn);
+ void vshlqc(Type ElmtTy, const Operand *OpQd, const Operand *OpQm,
+ const ConstantInteger32 *OpQn);
+
+ void vshrqic(Type ElmtTy, const Operand *OpQd, const Operand *OpQm,
+ const ConstantInteger32 *OpQn);
+
+ void vshrquc(Type ElmtTy, const Operand *OpQd, const Operand *OpQm,
+ const ConstantInteger32 *OpQn);
+
void vsqrtd(const Operand *OpDd, const Operand *OpDm, CondARM32::Cond Cond);
void vsqrts(const Operand *OpSd, const Operand *OpSm, CondARM32::Cond Cond);
@@ -739,6 +756,20 @@ private:
const Operand *OpQn, const Operand *OpQm,
const char *OpcodeName);
+ // Implements various forms of vector (SIMD) shifts using Q registers.
+ // Implements pattern 111100101Diiiiiidddd010101M1mmmm where Dddd=Qd, Mmmm=Qm,
+ // iiiiii=Imm6, and Opcode is unioned into the pattern.
+ void emitSIMDShiftqqc(IValueT Opcode, const Operand *OpQd,
+ const Operand *OpQm, const IValueT Imm6,
+ const char *OpcodeName);
+
+ // Implements various forms of vector (SIMD) casts between (signed and
+ // unsigned) integer and floating point types (f32). Implements pattern
+ // 111100111D11ss11dddd011ooQM0mmmm where Dddd=Qd, Mmmm=Qm, 10=ss, op=00, 1=Q,
+ // and Opcode is unioned into the pattern.
+ void emitSIMDCvtqq(IValueT Opcode, const Operand *OpQd, const Operand *OpQm,
+ const char *CvtName);
+
// Pattern cccctttxxxxnnnn0000iiiiiiiiiiii where cccc=Cond, nnnn=Rn,
// ttt=Instruction type (derived from OpSrc1), iiiiiiiiiiii is derived from
// OpSrc1, and xxxx=Opcode.
« no previous file with comments | « no previous file | src/IceAssemblerARM32.cpp » ('j') | tests_lit/assembler/arm32/vcvt.f32.s32.ll » ('J')

Powered by Google App Engine
This is Rietveld 408576698