diff --git a/Golang-s390x-asm-Reference.md b/Golang-s390x-asm-Reference.md index 32dd0ad..7962bed 100644 --- a/Golang-s390x-asm-Reference.md +++ b/Golang-s390x-asm-Reference.md @@ -39,8 +39,12 @@ Addressing modes: - VAC - Vector Add With Carry. 带进位无符号数加法;相当于3个数加法。 - VACC - Vector Add Compute Carry. 无符号数加法,计算进位。只有进位结果。 - VACCC - Vector Add With Carry Compute Carry. 带进位无符号数加法,计算进位。相当于3个数加法,只有进位结果。 +- VS - Vector Substract. 无符号数减法。 +- VSBCBI - Vector Substract With Borrow Compute Borrow Indication. 带借位计算借位。 +- VSBI - Vector Substract With Borrow Indicator. 带借位减法。 +- VSCBI - Vector Substract Compute Borrow Indication. 计算借位。 -所以,两个数相加要同时使用多个指令。示例演示T1||T0, RED2||RED1两个256位数的加法,得到 T2||T1||T0。 +所以,两个数相加要同时使用多个指令。下面示例演示 T2||T1||T0 = T1||T0 + RED2||RED1。 ```asm VACCQ T0, RED1, CAR1 VAQ T0, RED1, T0 @@ -49,6 +53,14 @@ Addressing modes: VAQ T2, CAR2, T2 ``` +下面示例演示 T2||TT1||TT0 = T2||T1||T0 - ZERO||PH||PL。 +```asm + VSCBIQ PL, T0, CAR1 + VSQ PL, T0, TT0 + VSBCBIQ T1, PH, CAR1, CAR2 + VSBIQ T1, PH, CAR1, TT1 + VSBIQ T2, ZER, CAR2, T2 +```