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

Unified Diff: src/IceInstARM32.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
Index: src/IceInstARM32.h
diff --git a/src/IceInstARM32.h b/src/IceInstARM32.h
index 7a543c43619329f6c34ac7d890b3352916ef03bc..3c6503720910549040d09665eb89735de3f3d511 100644
--- a/src/IceInstARM32.h
+++ b/src/IceInstARM32.h
@@ -438,6 +438,7 @@ public:
Vneg,
Vorr,
Vshl,
+ Vshr,
Vsqrt,
Vsub
};
@@ -822,12 +823,18 @@ public:
InstARM32ThreeAddrSignAwareFP(Func, Dest, Src0, Src1);
}
+ static InstARM32ThreeAddrSignAwareFP *
+ create(Cfg *Func, Variable *Dest, Variable *Src0, ConstantInteger32 *Src1) {
+ return new (Func->allocate<InstARM32ThreeAddrSignAwareFP>())
+ InstARM32ThreeAddrSignAwareFP(Func, Dest, Src0, Src1);
+ }
+
void emitIAS(const Cfg *Func) const override;
void setSignType(InstARM32::FPSign SignType) { this->Sign = SignType; }
private:
InstARM32ThreeAddrSignAwareFP(Cfg *Func, Variable *Dest, Variable *Src0,
- Variable *Src1)
+ Operand *Src1)
: InstARM32ThreeAddrFP<K>(Func, Dest, Src0, Src1) {}
};
@@ -993,6 +1000,7 @@ using InstARM32Vmul = InstARM32ThreeAddrFP<InstARM32::Vmul>;
using InstARM32Vneg = InstARM32UnaryopSignAwareFP<InstARM32::Vneg>;
using InstARM32Vorr = InstARM32ThreeAddrFP<InstARM32::Vorr>;
using InstARM32Vshl = InstARM32ThreeAddrSignAwareFP<InstARM32::Vshl>;
+using InstARM32Vshr = InstARM32ThreeAddrSignAwareFP<InstARM32::Vshr>;
using InstARM32Vsub = InstARM32ThreeAddrFP<InstARM32::Vsub>;
using InstARM32Ldr = InstARM32LoadBase<InstARM32::Ldr>;
using InstARM32Ldrex = InstARM32LoadBase<InstARM32::Ldrex>;
@@ -1358,7 +1366,22 @@ class InstARM32Vcvt final : public InstARM32Pred {
InstARM32Vcvt &operator=(const InstARM32Vcvt &) = delete;
public:
- enum VcvtVariant { S2si, S2ui, Si2s, Ui2s, D2si, D2ui, Si2d, Ui2d, S2d, D2s };
+ enum VcvtVariant {
+ S2si,
+ S2ui,
+ Si2s,
+ Ui2s,
+ D2si,
+ D2ui,
+ Si2d,
+ Ui2d,
+ S2d,
+ D2s,
+ Vs2si,
+ Vs2ui,
+ Vsi2s,
+ Vui2s,
+ };
static InstARM32Vcvt *create(Cfg *Func, Variable *Dest, Variable *Src,
VcvtVariant Variant, CondARM32::Cond Predicate) {
return new (Func->allocate<InstARM32Vcvt>())

Powered by Google App Engine
This is Rietveld 408576698