To prevent the wrong learning of an exhaust recirculation amount caused by the fact that a condition under which the learning of an exhaust recirculation amount is performed is in a throttle opening state far away from that at the time of homogeneous combustion when the learning value of throttle opening is obtained.
The learning value EGRg of EGR opening at layer combustion is obtained (S360 to S400), after the learning value Tbg of throttle opening at that time is calculated ('YES' in S310), and a target throttle opening tTA is corrected by the above learning value Tbg. Even when the deviation between a throttle opening instruction value and an intake air pressure is not uniform with the throttle opening, the throttle opening at the time of obtaining the value EGRg is same or approximately same as that when the value Tbg is obtained. Thereby, since the target throttle opening tTA is correctly compensated, the value EGRg can be obtained correctly without wrong learning.