Skip to content

Commit 8c43521

Browse files
committed
refactor
1 parent 1a7ce63 commit 8c43521

File tree

1 file changed

+22
-25
lines changed

1 file changed

+22
-25
lines changed

llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,6 @@ class WebAssemblyFastISel final : public FastISel {
157157
MachineMemOperand *MMO);
158158
unsigned maskI1Value(unsigned Reg, const Value *V);
159159
unsigned getRegForI1Value(const Value *V, const BasicBlock *BB, bool &Not);
160-
unsigned truncate(unsigned Reg, const Value *V, MVT::SimpleValueType From,
161-
MVT::SimpleValueType To);
162160
unsigned zeroExtendToI32(unsigned Reg, const Value *V,
163161
MVT::SimpleValueType From);
164162
unsigned signExtendToI32(unsigned Reg, const Value *V,
@@ -521,28 +519,6 @@ unsigned WebAssemblyFastISel::signExtendToI32(unsigned Reg, const Value *V,
521519
return Right;
522520
}
523521

524-
unsigned WebAssemblyFastISel::truncate(unsigned Reg, const Value *V,
525-
MVT::SimpleValueType From,
526-
MVT::SimpleValueType To) {
527-
if (From == MVT::i64) {
528-
if (To == MVT::i64)
529-
return copyValue(Reg);
530-
531-
if (To == MVT::i1 || To == MVT::i8 || To == MVT::i16 || To == MVT::i32) {
532-
Register Result = createResultReg(&WebAssembly::I32RegClass);
533-
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, MIMD,
534-
TII.get(WebAssembly::I32_WRAP_I64), Result)
535-
.addReg(Reg);
536-
return Result;
537-
}
538-
}
539-
540-
if (From == MVT::i32)
541-
return copyValue(Reg);
542-
543-
return 0;
544-
}
545-
546522
unsigned WebAssemblyFastISel::zeroExtend(unsigned Reg, const Value *V,
547523
MVT::SimpleValueType From,
548524
MVT::SimpleValueType To) {
@@ -1018,7 +994,28 @@ bool WebAssemblyFastISel::selectTrunc(const Instruction *I) {
1018994
Register In = getRegForValue(Op);
1019995
if (In == 0)
1020996
return false;
1021-
unsigned Reg = truncate(In, Op, From, To);
997+
998+
auto Truncate = [&](Register Reg) -> unsigned {
999+
if (From == MVT::i64) {
1000+
if (To == MVT::i64)
1001+
return copyValue(Reg);
1002+
1003+
if (To == MVT::i1 || To == MVT::i8 || To == MVT::i16 || To == MVT::i32) {
1004+
Register Result = createResultReg(&WebAssembly::I32RegClass);
1005+
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, MIMD,
1006+
TII.get(WebAssembly::I32_WRAP_I64), Result)
1007+
.addReg(Reg);
1008+
return Result;
1009+
}
1010+
}
1011+
1012+
if (From == MVT::i32)
1013+
return copyValue(Reg);
1014+
1015+
return 0;
1016+
};
1017+
1018+
unsigned Reg = Truncate(In);
10221019
if (Reg == 0)
10231020
return false;
10241021

0 commit comments

Comments
 (0)