| 659 | } |
| 660 | |
| 661 | void GcnCompiler::emitUpdateScc( |
| 662 | GcnRegisterValuePair& dst, GcnScalarType dstType) |
| 663 | { |
| 664 | // TODO: |
| 665 | // Currently we only support zero test, |
| 666 | // we need to support carry-out and borrow-in eventually. |
| 667 | |
| 668 | auto result = emitRegisterZeroTest(dst.low, GcnZeroTest::TestNz); |
| 669 | |
| 670 | if (isDoubleType(dstType)) |
| 671 | { |
| 672 | auto resultHigh = emitRegisterZeroTest(dst.high, GcnZeroTest::TestNz); |
| 673 | result.id = m_module.opLogicalOr(m_module.defBoolType(), |
| 674 | result.id, resultHigh.id); |
| 675 | } |
| 676 | |
| 677 | emitValueStore(m_state.scc, result, GcnRegMask::select(0)); |
| 678 | } |
| 679 | |
| 680 | void GcnCompiler::emitScalarSync(const GcnShaderInstruction& ins) |
| 681 | { |
nothing calls this directly
no test coverage detected