| Index: src/IceTargetLoweringX8632.cpp
|
| diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp
|
| index 343113cfeeb16f74ef321bc4dc7867a16567e6ba..eb41b84dae6d7f1196e1c8793db2fab861941e39 100644
|
| --- a/src/IceTargetLoweringX8632.cpp
|
| +++ b/src/IceTargetLoweringX8632.cpp
|
| @@ -2058,7 +2058,7 @@ void TargetX8632::lowerCast(const InstCast *Inst) {
|
| Operand *Src0RM = legalize(Inst->getSrc(0), Legal_Reg | Legal_Mem);
|
| // t1 = cvt Src0RM; Dest = t1
|
| Variable *T = makeReg(Dest->getType());
|
| - _cvt(T, Src0RM);
|
| + _cvt(T, Src0RM, InstX8632Cvt::Float2float);
|
| _mov(Dest, T);
|
| break;
|
| }
|
| @@ -2068,7 +2068,7 @@ void TargetX8632::lowerCast(const InstCast *Inst) {
|
| Inst->getSrc(0)->getType() == IceType_v4f32);
|
| Operand *Src0RM = legalize(Inst->getSrc(0), Legal_Reg | Legal_Mem);
|
| Variable *T = makeReg(Dest->getType());
|
| - _cvtt(T, Src0RM);
|
| + _cvt(T, Src0RM, InstX8632Cvt::Tps2dq);
|
| _movp(Dest, T);
|
| } else if (Dest->getType() == IceType_i64) {
|
| // Use a helper for converting floating-point values to 64-bit
|
| @@ -2091,7 +2091,7 @@ void TargetX8632::lowerCast(const InstCast *Inst) {
|
| // t1.i32 = cvt Src0RM; t2.dest_type = t1; Dest = t2.dest_type
|
| Variable *T_1 = makeReg(IceType_i32);
|
| Variable *T_2 = makeReg(Dest->getType());
|
| - _cvtt(T_1, Src0RM);
|
| + _cvt(T_1, Src0RM, InstX8632Cvt::Tss2si);
|
| _mov(T_2, T_1); // T_1 and T_2 may have different integer types
|
| if (Dest->getType() == IceType_i1)
|
| _and(T_2, Ctx->getConstantInt32(IceType_i1, 1));
|
| @@ -2127,7 +2127,7 @@ void TargetX8632::lowerCast(const InstCast *Inst) {
|
| // t1.i32 = cvt Src0RM; t2.dest_type = t1; Dest = t2.dest_type
|
| Variable *T_1 = makeReg(IceType_i32);
|
| Variable *T_2 = makeReg(Dest->getType());
|
| - _cvtt(T_1, Src0RM);
|
| + _cvt(T_1, Src0RM, InstX8632Cvt::Tss2si);
|
| _mov(T_2, T_1); // T_1 and T_2 may have different integer types
|
| if (Dest->getType() == IceType_i1)
|
| _and(T_2, Ctx->getConstantInt32(IceType_i1, 1));
|
| @@ -2140,7 +2140,7 @@ void TargetX8632::lowerCast(const InstCast *Inst) {
|
| Inst->getSrc(0)->getType() == IceType_v4i32);
|
| Operand *Src0RM = legalize(Inst->getSrc(0), Legal_Reg | Legal_Mem);
|
| Variable *T = makeReg(Dest->getType());
|
| - _cvt(T, Src0RM);
|
| + _cvt(T, Src0RM, InstX8632Cvt::Dq2ps);
|
| _movp(Dest, T);
|
| } else if (Inst->getSrc(0)->getType() == IceType_i64) {
|
| // Use a helper for x86-32.
|
| @@ -2163,7 +2163,7 @@ void TargetX8632::lowerCast(const InstCast *Inst) {
|
| _mov(T_1, Src0RM);
|
| else
|
| _movsx(T_1, Src0RM);
|
| - _cvt(T_2, T_1);
|
| + _cvt(T_2, T_1, InstX8632Cvt::Si2ss);
|
| _mov(Dest, T_2);
|
| }
|
| break;
|
| @@ -2202,7 +2202,7 @@ void TargetX8632::lowerCast(const InstCast *Inst) {
|
| _mov(T_1, Src0RM);
|
| else
|
| _movzx(T_1, Src0RM);
|
| - _cvt(T_2, T_1);
|
| + _cvt(T_2, T_1, InstX8632Cvt::Si2ss);
|
| _mov(Dest, T_2);
|
| }
|
| break;
|
|
|