SDVTList VTList = CurDAG->getVTList(MVT::i32, MVT::Glue);
- unsigned Opc = IsAdd ? AMDGPU::S_ADD_U32 : AMDGPU::S_SUB_U32;
- unsigned CarryOpc = IsAdd ? AMDGPU::S_ADDC_U32 : AMDGPU::S_SUBB_U32;
+ static const unsigned OpcMap[2][2][2] = {
+ {{AMDGPU::S_SUB_U32, AMDGPU::S_ADD_U32},
+ {AMDGPU::V_SUB_I32_e32, AMDGPU::V_ADD_I32_e32}},
+ {{AMDGPU::S_SUBB_U32, AMDGPU::S_ADDC_U32},
+ {AMDGPU::V_SUBB_U32_e32, AMDGPU::V_ADDC_U32_e32}}};
+
+ unsigned Opc = OpcMap[0][N->isDivergent()][IsAdd];
+ unsigned CarryOpc = OpcMap[1][N->isDivergent()][IsAdd];
SDNode *AddLo;
if (!ConsumeCarry) {
; GFX9-NEXT: v_mul_lo_u32 v14, v7, v13
; GFX9-NEXT: v_addc_co_u32_e32 v11, vcc, v16, v11, vcc
; GFX9-NEXT: v_mul_hi_u32 v13, v7, v13
-; GFX9-NEXT: v_add_co_u32_e32 v12, vcc, v14, v12
+; GFX9-NEXT: v_add_co_u32_e32 v12, vcc, v12, v14
; GFX9-NEXT: v_mul_hi_u32 v12, v7, v10
; GFX9-NEXT: v_mul_lo_u32 v10, v7, v10
; GFX9-NEXT: v_addc_co_u32_e32 v11, vcc, v11, v13, vcc
; GFX9-NEXT: v_mul_hi_u32 v13, v10, v8
; GFX9-NEXT: v_mul_lo_u32 v8, v10, v8
; GFX9-NEXT: v_addc_co_u32_e32 v14, vcc, v16, v14, vcc
-; GFX9-NEXT: v_add_co_u32_e32 v8, vcc, v8, v12
+; GFX9-NEXT: v_add_co_u32_e32 v8, vcc, v12, v8
; GFX9-NEXT: v_mul_hi_u32 v8, v10, v9
; GFX9-NEXT: v_mul_lo_u32 v9, v10, v9
; GFX9-NEXT: v_addc_co_u32_e32 v12, vcc, v14, v13, vcc
; GFX9-NEXT: v_mul_hi_u32 v6, v1, v6
; GFX9-NEXT: v_mul_hi_u32 v13, v1, v7
; GFX9-NEXT: v_mul_lo_u32 v7, v1, v7
-; GFX9-NEXT: v_add_co_u32_e32 v10, vcc, v12, v10
+; GFX9-NEXT: v_add_co_u32_e32 v10, vcc, v10, v12
; GFX9-NEXT: v_addc_co_u32_e32 v6, vcc, v11, v6, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v13, v15, vcc
; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v7
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v13, v14, vcc
; GFX9-NEXT: v_mul_lo_u32 v14, v5, v11
; GFX9-NEXT: v_mul_hi_u32 v11, v5, v11
-; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v14, v9
+; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v9, v14
; GFX9-NEXT: v_addc_co_u32_e32 v9, vcc, v10, v11, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v15, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v8, vcc, v9, v8
; GFX9-NEXT: v_mul_hi_u32 v11, v8, v6
; GFX9-NEXT: v_mul_lo_u32 v6, v8, v6
; GFX9-NEXT: v_addc_co_u32_e32 v15, vcc, v13, v15, vcc
-; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v10
+; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v10, v6
; GFX9-NEXT: v_addc_co_u32_e32 v6, vcc, v15, v11, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v8, vcc, v14, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v7
; GFX9-NEXT: v_addc_co_u32_e32 v7, vcc, v13, v8, vcc
; GFX9-NEXT: v_mul_lo_u32 v8, v1, v4
; GFX9-NEXT: v_mul_hi_u32 v4, v1, v4
-; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v8, v6
+; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v8
; GFX9-NEXT: v_addc_co_u32_e32 v4, vcc, v7, v4, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v6, vcc, v9, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v4, vcc, v4, v5
; GFX9-NEXT: v_mul_lo_u32 v13, v6, v12
; GFX9-NEXT: v_mul_hi_u32 v12, v6, v12
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v15, v10, vcc
-; GFX9-NEXT: v_add_co_u32_e32 v11, vcc, v13, v11
+; GFX9-NEXT: v_add_co_u32_e32 v11, vcc, v11, v13
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v10, v12, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v11, vcc, v16, v14, vcc
; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v10, v9
; GFX9-NEXT: v_mul_hi_u32 v12, v9, v7
; GFX9-NEXT: v_mul_lo_u32 v7, v9, v7
; GFX9-NEXT: v_addc_co_u32_e32 v16, vcc, v15, v16, vcc
-; GFX9-NEXT: v_add_co_u32_e32 v7, vcc, v7, v11
+; GFX9-NEXT: v_add_co_u32_e32 v7, vcc, v11, v7
; GFX9-NEXT: v_addc_co_u32_e32 v7, vcc, v16, v12, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v9, vcc, v13, v14, vcc
; GFX9-NEXT: v_add_co_u32_e32 v7, vcc, v7, v8
; GFX9-NEXT: v_mul_hi_u32 v4, v1, v4
; GFX9-NEXT: v_mul_hi_u32 v12, v1, v6
; GFX9-NEXT: v_mul_lo_u32 v6, v1, v6
-; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v11, v9
+; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v9, v11
; GFX9-NEXT: v_addc_co_u32_e32 v4, vcc, v10, v4, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v9, vcc, v12, v14, vcc
; GFX9-NEXT: v_add_co_u32_e32 v4, vcc, v4, v6
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v13, v14, vcc
; GFX9-NEXT: v_mul_lo_u32 v14, v5, v11
; GFX9-NEXT: v_mul_hi_u32 v11, v5, v11
-; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v14, v9
+; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v9, v14
; GFX9-NEXT: v_addc_co_u32_e32 v9, vcc, v10, v11, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v15, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v8, vcc, v9, v8
; GFX9-NEXT: v_mul_hi_u32 v11, v8, v6
; GFX9-NEXT: v_mul_lo_u32 v6, v8, v6
; GFX9-NEXT: v_addc_co_u32_e32 v15, vcc, v13, v15, vcc
-; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v10
+; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v10, v6
; GFX9-NEXT: v_addc_co_u32_e32 v6, vcc, v15, v11, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v8, vcc, v14, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v7
; GFX9-NEXT: v_addc_co_u32_e32 v7, vcc, v13, v8, vcc
; GFX9-NEXT: v_mul_lo_u32 v8, v1, v4
; GFX9-NEXT: v_mul_hi_u32 v4, v1, v4
-; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v8, v6
+; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v8
; GFX9-NEXT: v_addc_co_u32_e32 v4, vcc, v7, v4, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v6, vcc, v9, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v4, vcc, v4, v5
; GFX9-NEXT: v_mul_lo_u32 v14, v7, v13
; GFX9-NEXT: v_addc_co_u32_e32 v11, vcc, v16, v11, vcc
; GFX9-NEXT: v_mul_hi_u32 v13, v7, v13
-; GFX9-NEXT: v_add_co_u32_e32 v12, vcc, v14, v12
+; GFX9-NEXT: v_add_co_u32_e32 v12, vcc, v12, v14
; GFX9-NEXT: v_mul_hi_u32 v12, v7, v10
; GFX9-NEXT: v_mul_lo_u32 v10, v7, v10
; GFX9-NEXT: v_addc_co_u32_e32 v11, vcc, v11, v13, vcc
; GFX9-NEXT: v_mul_hi_u32 v13, v10, v8
; GFX9-NEXT: v_mul_lo_u32 v8, v10, v8
; GFX9-NEXT: v_addc_co_u32_e32 v14, vcc, v16, v14, vcc
-; GFX9-NEXT: v_add_co_u32_e32 v8, vcc, v8, v12
+; GFX9-NEXT: v_add_co_u32_e32 v8, vcc, v12, v8
; GFX9-NEXT: v_mul_hi_u32 v8, v10, v9
; GFX9-NEXT: v_mul_lo_u32 v9, v10, v9
; GFX9-NEXT: v_addc_co_u32_e32 v12, vcc, v14, v13, vcc
; GFX9-NEXT: v_mul_hi_u32 v4, v1, v4
; GFX9-NEXT: v_mul_hi_u32 v13, v1, v7
; GFX9-NEXT: v_mul_lo_u32 v7, v1, v7
-; GFX9-NEXT: v_add_co_u32_e32 v10, vcc, v12, v10
+; GFX9-NEXT: v_add_co_u32_e32 v10, vcc, v10, v12
; GFX9-NEXT: v_addc_co_u32_e32 v4, vcc, v11, v4, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v13, v15, vcc
; GFX9-NEXT: v_add_co_u32_e32 v4, vcc, v4, v7
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v13, v14, vcc
; GFX9-NEXT: v_mul_lo_u32 v14, v5, v11
; GFX9-NEXT: v_mul_hi_u32 v11, v5, v11
-; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v14, v9
+; GFX9-NEXT: v_add_co_u32_e32 v9, vcc, v9, v14
; GFX9-NEXT: v_addc_co_u32_e32 v9, vcc, v10, v11, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v10, vcc, v15, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v8, vcc, v9, v8
; GFX9-NEXT: v_mul_hi_u32 v11, v8, v6
; GFX9-NEXT: v_mul_lo_u32 v6, v8, v6
; GFX9-NEXT: v_addc_co_u32_e32 v15, vcc, v13, v15, vcc
-; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v10
+; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v10, v6
; GFX9-NEXT: v_addc_co_u32_e32 v6, vcc, v15, v11, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v8, vcc, v14, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v7
; GFX9-NEXT: v_addc_co_u32_e32 v7, vcc, v13, v8, vcc
; GFX9-NEXT: v_mul_lo_u32 v8, v1, v4
; GFX9-NEXT: v_mul_hi_u32 v4, v1, v4
-; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v8, v6
+; GFX9-NEXT: v_add_co_u32_e32 v6, vcc, v6, v8
; GFX9-NEXT: v_addc_co_u32_e32 v4, vcc, v7, v4, vcc
; GFX9-NEXT: v_addc_co_u32_e32 v6, vcc, v9, v12, vcc
; GFX9-NEXT: v_add_co_u32_e32 v4, vcc, v4, v5
; GCN-NEXT: v_mul_lo_u32 v13, v6, v10
; GCN-NEXT: v_mul_hi_u32 v10, v6, v10
; GCN-NEXT: v_addc_u32_e32 v11, vcc, v15, v11, vcc
-; GCN-NEXT: v_add_i32_e32 v12, vcc, v13, v12
+; GCN-NEXT: v_add_i32_e32 v12, vcc, v12, v13
; GCN-NEXT: v_addc_u32_e32 v10, vcc, v11, v10, vcc
; GCN-NEXT: v_addc_u32_e32 v11, vcc, v16, v14, vcc
; GCN-NEXT: v_add_i32_e32 v9, vcc, v10, v9
; GCN-NEXT: v_mul_hi_u32 v11, v9, v8
; GCN-NEXT: v_addc_u32_e32 v16, vcc, v15, v17, vcc
; GCN-NEXT: v_mul_lo_u32 v8, v9, v8
-; GCN-NEXT: v_add_i32_e32 v7, vcc, v7, v13
+; GCN-NEXT: v_add_i32_e32 v7, vcc, v13, v7
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v16, v12, vcc
; GCN-NEXT: v_addc_u32_e32 v9, vcc, v11, v14, vcc
; GCN-NEXT: v_add_i32_e32 v7, vcc, v7, v8
; GCN-NEXT: v_mul_hi_u32 v5, v1, v5
; GCN-NEXT: v_mul_hi_u32 v11, v1, v6
; GCN-NEXT: v_mul_lo_u32 v6, v1, v6
-; GCN-NEXT: v_add_i32_e32 v8, vcc, v10, v8
+; GCN-NEXT: v_add_i32_e32 v8, vcc, v8, v10
; GCN-NEXT: v_addc_u32_e32 v5, vcc, v9, v5, vcc
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v11, v14, vcc
; GCN-NEXT: v_add_i32_e32 v5, vcc, v5, v6
; GCN-NEXT: v_mul_lo_u32 v11, v4, v8
; GCN-NEXT: v_mul_hi_u32 v8, v4, v8
; GCN-NEXT: v_addc_u32_e32 v9, vcc, v13, v9, vcc
-; GCN-NEXT: v_add_i32_e32 v10, vcc, v11, v10
+; GCN-NEXT: v_add_i32_e32 v10, vcc, v10, v11
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v9, v8, vcc
; GCN-NEXT: v_addc_u32_e32 v9, vcc, v14, v12, vcc
; GCN-NEXT: v_add_i32_e32 v7, vcc, v8, v7
; GCN-NEXT: v_mul_hi_u32 v9, v7, v6
; GCN-NEXT: v_addc_u32_e32 v14, vcc, v13, v15, vcc
; GCN-NEXT: v_mul_lo_u32 v6, v7, v6
-; GCN-NEXT: v_add_i32_e32 v5, vcc, v5, v11
+; GCN-NEXT: v_add_i32_e32 v5, vcc, v11, v5
; GCN-NEXT: v_addc_u32_e32 v5, vcc, v14, v10, vcc
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v9, v12, vcc
; GCN-NEXT: v_add_i32_e32 v5, vcc, v5, v6
; GCN-NEXT: v_mul_lo_u32 v11, v4, v8
; GCN-NEXT: v_mul_hi_u32 v8, v4, v8
; GCN-NEXT: v_addc_u32_e32 v9, vcc, v13, v9, vcc
-; GCN-NEXT: v_add_i32_e32 v10, vcc, v11, v10
+; GCN-NEXT: v_add_i32_e32 v10, vcc, v10, v11
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v9, v8, vcc
; GCN-NEXT: v_addc_u32_e32 v9, vcc, v14, v12, vcc
; GCN-NEXT: v_add_i32_e32 v7, vcc, v8, v7
; GCN-NEXT: v_mul_hi_u32 v9, v7, v6
; GCN-NEXT: v_addc_u32_e32 v14, vcc, v13, v15, vcc
; GCN-NEXT: v_mul_lo_u32 v6, v7, v6
-; GCN-NEXT: v_add_i32_e32 v5, vcc, v5, v11
+; GCN-NEXT: v_add_i32_e32 v5, vcc, v11, v5
; GCN-NEXT: v_addc_u32_e32 v5, vcc, v14, v10, vcc
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v9, v12, vcc
; GCN-NEXT: v_add_i32_e32 v5, vcc, v5, v6
; GCN-NEXT: v_mul_lo_u32 v12, v5, v9
; GCN-NEXT: v_mul_hi_u32 v9, v5, v9
; GCN-NEXT: v_addc_u32_e32 v10, vcc, v14, v10, vcc
-; GCN-NEXT: v_add_i32_e32 v11, vcc, v12, v11
+; GCN-NEXT: v_add_i32_e32 v11, vcc, v11, v12
; GCN-NEXT: v_addc_u32_e32 v9, vcc, v10, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v10, vcc, v15, v13, vcc
; GCN-NEXT: v_add_i32_e32 v8, vcc, v9, v8
; GCN-NEXT: v_mul_hi_u32 v10, v8, v7
; GCN-NEXT: v_addc_u32_e32 v15, vcc, v14, v16, vcc
; GCN-NEXT: v_mul_lo_u32 v7, v8, v7
-; GCN-NEXT: v_add_i32_e32 v6, vcc, v6, v12
+; GCN-NEXT: v_add_i32_e32 v6, vcc, v12, v6
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v15, v11, vcc
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v10, v13, vcc
; GCN-NEXT: v_add_i32_e32 v6, vcc, v6, v7
; GCN-NEXT: v_mul_hi_u32 v4, v1, v4
; GCN-NEXT: v_mul_hi_u32 v10, v1, v5
; GCN-NEXT: v_mul_lo_u32 v5, v1, v5
-; GCN-NEXT: v_add_i32_e32 v7, vcc, v9, v7
+; GCN-NEXT: v_add_i32_e32 v7, vcc, v7, v9
; GCN-NEXT: v_addc_u32_e32 v4, vcc, v8, v4, vcc
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v10, v13, vcc
; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v5
; GCN-NEXT: v_mul_lo_u32 v10, v3, v7
; GCN-NEXT: v_mul_hi_u32 v7, v3, v7
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v12, v8, vcc
-; GCN-NEXT: v_add_i32_e32 v9, vcc, v10, v9
+; GCN-NEXT: v_add_i32_e32 v9, vcc, v9, v10
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v8, v7, vcc
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v13, v11, vcc
; GCN-NEXT: v_add_i32_e32 v6, vcc, v7, v6
; GCN-NEXT: v_mul_hi_u32 v8, v6, v5
; GCN-NEXT: v_addc_u32_e32 v13, vcc, v12, v14, vcc
; GCN-NEXT: v_mul_lo_u32 v5, v6, v5
-; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v10
+; GCN-NEXT: v_add_i32_e32 v4, vcc, v10, v4
; GCN-NEXT: v_addc_u32_e32 v4, vcc, v13, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v8, v11, vcc
; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v5
; GCN-NEXT: v_mul_lo_u32 v10, v3, v7
; GCN-NEXT: v_mul_hi_u32 v7, v3, v7
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v12, v8, vcc
-; GCN-NEXT: v_add_i32_e32 v9, vcc, v10, v9
+; GCN-NEXT: v_add_i32_e32 v9, vcc, v9, v10
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v8, v7, vcc
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v13, v11, vcc
; GCN-NEXT: v_add_i32_e32 v6, vcc, v7, v6
; GCN-NEXT: v_mul_hi_u32 v8, v6, v5
; GCN-NEXT: v_addc_u32_e32 v13, vcc, v12, v14, vcc
; GCN-NEXT: v_mul_lo_u32 v5, v6, v5
-; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v10
+; GCN-NEXT: v_add_i32_e32 v4, vcc, v10, v4
; GCN-NEXT: v_addc_u32_e32 v4, vcc, v13, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v8, v11, vcc
; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v5
; GCN-NEXT: v_mul_lo_u32 v12, v5, v9
; GCN-NEXT: v_mul_hi_u32 v9, v5, v9
; GCN-NEXT: v_addc_u32_e32 v10, vcc, v14, v10, vcc
-; GCN-NEXT: v_add_i32_e32 v11, vcc, v12, v11
+; GCN-NEXT: v_add_i32_e32 v11, vcc, v11, v12
; GCN-NEXT: v_addc_u32_e32 v9, vcc, v10, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v10, vcc, v15, v13, vcc
; GCN-NEXT: v_add_i32_e32 v8, vcc, v9, v8
; GCN-NEXT: v_mul_hi_u32 v10, v8, v7
; GCN-NEXT: v_addc_u32_e32 v15, vcc, v14, v16, vcc
; GCN-NEXT: v_mul_lo_u32 v7, v8, v7
-; GCN-NEXT: v_add_i32_e32 v6, vcc, v6, v12
+; GCN-NEXT: v_add_i32_e32 v6, vcc, v12, v6
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v15, v11, vcc
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v10, v13, vcc
; GCN-NEXT: v_add_i32_e32 v6, vcc, v6, v7
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v14, v8, vcc
; GCN-NEXT: v_mul_lo_u32 v8, v1, v4
; GCN-NEXT: v_mul_hi_u32 v4, v1, v4
-; GCN-NEXT: v_add_i32_e32 v6, vcc, v8, v6
+; GCN-NEXT: v_add_i32_e32 v6, vcc, v6, v8
; GCN-NEXT: v_addc_u32_e32 v4, vcc, v7, v4, vcc
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v9, v13, vcc
; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v5
; GCN-NEXT: v_mul_lo_u32 v10, v3, v9
; GCN-NEXT: v_mul_hi_u32 v9, v3, v9
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v12, v7, vcc
-; GCN-NEXT: v_add_i32_e32 v8, vcc, v10, v8
+; GCN-NEXT: v_add_i32_e32 v8, vcc, v8, v10
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v7, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v13, v11, vcc
; GCN-NEXT: v_add_i32_e32 v6, vcc, v7, v6
; GCN-NEXT: v_mul_hi_u32 v8, v6, v5
; GCN-NEXT: v_addc_u32_e32 v13, vcc, v12, v14, vcc
; GCN-NEXT: v_mul_lo_u32 v5, v6, v5
-; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v10
+; GCN-NEXT: v_add_i32_e32 v4, vcc, v10, v4
; GCN-NEXT: v_addc_u32_e32 v4, vcc, v13, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v8, v11, vcc
; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v5
; GCN-NEXT: v_addc_u32_e32 v5, vcc, v10, v6, vcc
; GCN-NEXT: v_mul_lo_u32 v6, v1, v2
; GCN-NEXT: v_mul_hi_u32 v2, v1, v2
-; GCN-NEXT: v_add_i32_e32 v4, vcc, v6, v4
+; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v6
; GCN-NEXT: v_addc_u32_e32 v2, vcc, v5, v2, vcc
; GCN-NEXT: v_addc_u32_e32 v4, vcc, v7, v9, vcc
; GCN-NEXT: v_add_i32_e32 v2, vcc, v2, v3
; GCN-NEXT: v_mul_lo_u32 v12, v5, v9
; GCN-NEXT: v_mul_hi_u32 v9, v5, v9
; GCN-NEXT: v_addc_u32_e32 v10, vcc, v14, v10, vcc
-; GCN-NEXT: v_add_i32_e32 v11, vcc, v12, v11
+; GCN-NEXT: v_add_i32_e32 v11, vcc, v11, v12
; GCN-NEXT: v_addc_u32_e32 v9, vcc, v10, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v10, vcc, v15, v13, vcc
; GCN-NEXT: v_add_i32_e32 v8, vcc, v9, v8
; GCN-NEXT: v_mul_hi_u32 v10, v8, v7
; GCN-NEXT: v_addc_u32_e32 v15, vcc, v14, v16, vcc
; GCN-NEXT: v_mul_lo_u32 v7, v8, v7
-; GCN-NEXT: v_add_i32_e32 v6, vcc, v6, v12
+; GCN-NEXT: v_add_i32_e32 v6, vcc, v12, v6
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v15, v11, vcc
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v10, v13, vcc
; GCN-NEXT: v_add_i32_e32 v6, vcc, v6, v7
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v14, v8, vcc
; GCN-NEXT: v_mul_lo_u32 v8, v1, v4
; GCN-NEXT: v_mul_hi_u32 v4, v1, v4
-; GCN-NEXT: v_add_i32_e32 v6, vcc, v8, v6
+; GCN-NEXT: v_add_i32_e32 v6, vcc, v6, v8
; GCN-NEXT: v_addc_u32_e32 v4, vcc, v7, v4, vcc
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v9, v13, vcc
; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v5
; GCN-NEXT: v_mul_lo_u32 v10, v3, v9
; GCN-NEXT: v_mul_hi_u32 v9, v3, v9
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v12, v7, vcc
-; GCN-NEXT: v_add_i32_e32 v8, vcc, v10, v8
+; GCN-NEXT: v_add_i32_e32 v8, vcc, v8, v10
; GCN-NEXT: v_addc_u32_e32 v7, vcc, v7, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v8, vcc, v13, v11, vcc
; GCN-NEXT: v_add_i32_e32 v6, vcc, v7, v6
; GCN-NEXT: v_mul_hi_u32 v8, v6, v5
; GCN-NEXT: v_addc_u32_e32 v13, vcc, v12, v14, vcc
; GCN-NEXT: v_mul_lo_u32 v5, v6, v5
-; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v10
+; GCN-NEXT: v_add_i32_e32 v4, vcc, v10, v4
; GCN-NEXT: v_addc_u32_e32 v4, vcc, v13, v9, vcc
; GCN-NEXT: v_addc_u32_e32 v6, vcc, v8, v11, vcc
; GCN-NEXT: v_add_i32_e32 v4, vcc, v4, v5