OLD | NEW |
1 //===- subzero/src/IceTargetLoweringX86BaseImpl.h - x86 lowering -*- C++ -*-==// | 1 //===- subzero/src/IceTargetLoweringX86BaseImpl.h - x86 lowering -*- C++ -*-==// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 1936 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1947 // a.hi = t4.hi | 1947 // a.hi = t4.hi |
1948 // The mul instruction cannot take an immediate operand. | 1948 // The mul instruction cannot take an immediate operand. |
1949 Src1Lo = legalize(Src1Lo, Legal_Reg | Legal_Mem); | 1949 Src1Lo = legalize(Src1Lo, Legal_Reg | Legal_Mem); |
1950 _mov(T_1, Src0Hi); | 1950 _mov(T_1, Src0Hi); |
1951 _imul(T_1, Src1Lo); | 1951 _imul(T_1, Src1Lo); |
1952 _mov(T_3, Src0Lo, Traits::RegisterSet::Reg_eax); | 1952 _mov(T_3, Src0Lo, Traits::RegisterSet::Reg_eax); |
1953 _mul(T_4Lo, T_3, Src1Lo); | 1953 _mul(T_4Lo, T_3, Src1Lo); |
1954 // The mul instruction produces two dest variables, edx:eax. We create a | 1954 // The mul instruction produces two dest variables, edx:eax. We create a |
1955 // fake definition of edx to account for this. | 1955 // fake definition of edx to account for this. |
1956 Context.insert<InstFakeDef>(T_4Hi, T_4Lo); | 1956 Context.insert<InstFakeDef>(T_4Hi, T_4Lo); |
| 1957 Context.insert<InstFakeUse>(T_4Hi); |
1957 _mov(DestLo, T_4Lo); | 1958 _mov(DestLo, T_4Lo); |
1958 _add(T_4Hi, T_1); | 1959 _add(T_4Hi, T_1); |
1959 _mov(T_2, Src1Hi); | 1960 _mov(T_2, Src1Hi); |
1960 _imul(T_2, Src0Lo); | 1961 _imul(T_2, Src0Lo); |
1961 _add(T_4Hi, T_2); | 1962 _add(T_4Hi, T_2); |
1962 _mov(DestHi, T_4Hi); | 1963 _mov(DestHi, T_4Hi); |
1963 } break; | 1964 } break; |
1964 case InstArithmetic::Shl: | 1965 case InstArithmetic::Shl: |
1965 case InstArithmetic::Lshr: | 1966 case InstArithmetic::Lshr: |
1966 case InstArithmetic::Ashr: | 1967 case InstArithmetic::Ashr: |
(...skipping 5490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7457 emitGlobal(*Var, SectionSuffix); | 7458 emitGlobal(*Var, SectionSuffix); |
7458 } | 7459 } |
7459 } | 7460 } |
7460 } break; | 7461 } break; |
7461 } | 7462 } |
7462 } | 7463 } |
7463 } // end of namespace X86NAMESPACE | 7464 } // end of namespace X86NAMESPACE |
7464 } // end of namespace Ice | 7465 } // end of namespace Ice |
7465 | 7466 |
7466 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASEIMPL_H | 7467 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASEIMPL_H |
OLD | NEW |