cvt_int32_to_double = Function('cvt_int32_to_double', BitVecSort(32), BitVecSort(64)) # Uninterpreted ternary function declaration vfmadd132_double = Function('vfmadd132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfmadd132_single = Function('vfmadd132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfmsub132_double = Function('vfmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfmsub132_single = Function('vfmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmadd132_double = Function('vfnmadd132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmadd132_single = Function('vfnmadd132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmsub132_double = Function('vfnmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmsub132_single = Function('vfnmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) print('[6;30;44m' + 'Opcode:setnp_r8' + '[0m') R1 = BitVec('R1', 64) CONST_BV_S15_V0 = BitVecVal(0, 15) CONST_BV_S16_V0 = BitVecVal(0, 16) CONST_BV_S8_V1 = BitVecVal(1, 8) CONST_BV_S8_V0 = BitVecVal(0, 8) CONST_BV_S16_V1 = BitVecVal(0x1, 16) PK_R1 = ((If ((( Concat((CONST_BV_S15_V0), PF) == (CONST_BV_S16_V0) ) ) , ( Concat(Extract( R1.size() - 0 - 1, R1.size() - 56, R1 ) , (CONST_BV_S8_V1)) ) , ( Concat(Extract( R1.size() - 0 - 1, R1.size() - 56, R1 ) , (CONST_BV_S8_V0)) ) )) ) PS_R1 = (Concat((Extract (63, 8, ((R1)))), (If( ((If( (pf),(CONST_BV_S16_V1),(CONST_BV_S16_V0))) == (CONST_BV_S16_V0)),(CONST_BV_S8_V1),(CONST_BV_S8_V0))))) proverUtils.prove( PK_R1 == PS_R1 )
R2.size() - 256, R2))) + (CONST_BV_S65_V1)).size() - 1 - 1, ((Concat((CONST_BV_S1_V0), ((CONST_BV_S64_V18446744073709551615) ^ Extract(R1.size() - 192 - 1, R1.size() - 256, R1))) + Concat( (CONST_BV_S1_V0), Extract(R2.size() - 192 - 1, R2.size() - 256, R2))) + (CONST_BV_S65_V1)).size() - 65, ((Concat( (CONST_BV_S1_V0), ((CONST_BV_S64_V18446744073709551615) ^ Extract(R1.size() - 192 - 1, R1.size() - 256, R1))) + Concat( (CONST_BV_S1_V0), Extract(R2.size() - 192 - 1, R2.size() - 256, R2))) + (CONST_BV_S65_V1)))))) PS_R3 = (Concat((CONST_BV_S128_V0), (Concat( (Extract(63, 0, ((((Concat( (CONST_BV_S1_V0), ((Extract(127, 64, ((R1)))) ^ (CONST_BV_S64_Vffffffffffffffff)))) + (CONST_BV_S65_V1)) + (Concat( (CONST_BV_S1_V0), (Extract(127, 64, ((R2)))))))))), (Extract(63, 0, ((((Concat( (CONST_BV_S1_V0), ((Extract(63, 0, ((R1)))) ^ (CONST_BV_S64_Vffffffffffffffff)))) + (CONST_BV_S65_V1)) + (Concat( (CONST_BV_S1_V0), (Extract(63, 0, ((R2)))))))))))))) proverUtils.prove(PK_R3 == PS_R3)
vfmsub132_single = Function('vfmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmadd132_double = Function('vfnmadd132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmadd132_single = Function('vfnmadd132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmsub132_double = Function('vfnmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmsub132_single = Function('vfnmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) print('[6;30;44m' + 'Opcode:cmovpw_r16_r16' + '[0m') R1 = BitVec('R1', 64) R2 = BitVec('R2', 64) CONST_BV_S63_V0 = BitVecVal(0, 63) CONST_BV_S64_V0 = BitVecVal(0, 64) CONST_BV_S64_V1 = BitVecVal(0x1, 64) PK_R2 = ((If(((Concat((CONST_BV_S63_V0), PF) == (CONST_BV_S64_V0))), (R2), (Concat(Extract(R2.size() - 0 - 1, R2.size() - 48, R2), Extract(R1.size() - 48 - 1, R1.size() - 64, R1)))))) PS_R2 = (Concat((Extract(63, 16, ((R2)))), (If( ((If((pf), (CONST_BV_S64_V1), (CONST_BV_S64_V0))) == (CONST_BV_S64_V0)), (Extract(15, 0, ((R2)))), (Extract(15, 0, ((R1)))))))) proverUtils.prove(PK_R2 == PS_R2)
vfnmsub132_single = Function('vfnmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) print('[6;30;44m' + 'Opcode:incb_r8' + '[0m') R1 = BitVec('R1', 64) CONST_BV_S8_V1 = BitVecVal(1, 8) CONST_BV_S9_V1 = BitVecVal(1, 9) CONST_BV_S1_V0 = BitVecVal(0, 1) CONST_BV_S1_V1 = BitVecVal(1, 1) CONST_BV_S8_V0 = BitVecVal(0, 8) CONST_BV_S5_V1 = BitVecVal(0x1, 5) PK_OF = ((If (( (And( ( (CONST_BV_S1_V0) == Extract( R1.size() - 56 - 1, R1.size() - 57, R1 ) ) , (Not ( ( (CONST_BV_S1_V0) == Extract( ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ).size() - 1 - 1, ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ).size() - 2, ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ) ) ) )) )) ) , ( (CONST_BV_S1_V1) ) , ( (CONST_BV_S1_V0) ) )) ) == ONE1 PS_OF = (And(((False) == ((Extract (7, 7, ((R1)))) == (CONST_BV_S1_V1))), (Not(((False) == ((Extract (7, 7, (((CONST_BV_S9_V1) + (Concat((CONST_BV_S1_V0), (Extract (7, 0, ((R1)))))))))) == (CONST_BV_S1_V1))))))) proverUtils.prove( PK_OF == PS_OF ) PK_R1 = (Concat(Extract( R1.size() - 0 - 1, R1.size() - 56, R1 ) , Extract( ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ).size() - 1 - 1, ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ).size() - 9, ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ) ) ) ) PS_R1 = (Concat((Extract (63, 8, ((R1)))), (Extract (7, 0, (((CONST_BV_S9_V1) + (Concat((CONST_BV_S1_V0), (Extract (7, 0, ((R1)))))))))))) proverUtils.prove( PK_R1 == PS_R1 ) PK_SF = (Extract( ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ).size() - 1 - 1, ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ).size() - 2, ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ) ) ) == ONE1 PS_SF = ((Extract (7, 7, (((CONST_BV_S9_V1) + (Concat((CONST_BV_S1_V0), (Extract (7, 0, ((R1)))))))))) == (CONST_BV_S1_V1)) proverUtils.prove( PK_SF == PS_SF ) PK_ZF = ((If ((( Extract( ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ).size() - 1 - 1, ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ).size() - 9, ( (CONST_BV_S9_V1) + Concat((CONST_BV_S1_V0), Extract( R1.size() - 56 - 1, R1.size() - 64, R1 ) ) ) ) == (CONST_BV_S8_V0) ) ) , ( (CONST_BV_S1_V1) ) , ( (CONST_BV_S1_V0) ) )) ) == ONE1 PS_ZF = ((Extract (7, 0, (((CONST_BV_S9_V1) + (Concat((CONST_BV_S1_V0), (Extract (7, 0, ((R1)))))))))) == (CONST_BV_S8_V0)) proverUtils.prove( PK_ZF == PS_ZF )
CONST_BV_S32_VNEG1 = BitVecVal(-1, 32) CONST_BV_S1_V0 = BitVecVal(0, 1) CONST_BV_S33_V1 = BitVecVal(1, 33) CONST_BV_S32_V1 = BitVecVal(1, 32) CONST_BV_S1_V1 = BitVecVal(1, 1) CONST_BV_S16_V0 = BitVecVal(0, 16) CONST_BV_S17_V65535 = BitVecVal(65535, 17) CONST_BV_S32_V0 = BitVecVal(0, 32) CONST_BV_S4_Vf = BitVecVal(0xf, 4) CONST_BV_S32_Vffffffff = BitVecVal(0xffffffff, 32) CONST_BV_S9_V0 = BitVecVal(0x0, 9) CONST_BV_S9_Vff = BitVecVal(0xff, 9) PK_CF = (Extract( ( Concat((CONST_BV_S1_V0), Extract( ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 9 - 1, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 17, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ) ) ) + Concat((CONST_BV_S1_V0), Extract( ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 9 - 1, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 17, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ) ) ) ).size() - 0 - 1, ( Concat((CONST_BV_S1_V0), Extract( ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 9 - 1, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 17, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ) ) ) + Concat((CONST_BV_S1_V0), Extract( ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 9 - 1, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 17, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ) ) ) ).size() - 1, ( Concat((CONST_BV_S1_V0), Extract( ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 9 - 1, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 17, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ) ) ) + Concat((CONST_BV_S1_V0), Extract( ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 9 - 1, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ).size() - 17, ( Concat((CONST_BV_S16_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 0 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) + (CONST_BV_S17_V65535) ) ) ) ) ) ) == ONE1 PS_CF = ((Extract (8, 8, (((If( ((Extract (32, 32, ((((Concat((CONST_BV_S1_V0), ((Extract (31, 0, ((R1)))) ^ (CONST_BV_S32_Vffffffff)))) + (CONST_BV_S33_V1)) + (Concat((CONST_BV_S1_V0), (Extract (31, 0, ((R2)))))))))) == (CONST_BV_S1_V1)),(CONST_BV_S9_V0),(CONST_BV_S9_Vff))) + (If( ((Extract (32, 32, ((((Concat((CONST_BV_S1_V0), ((Extract (31, 0, ((R1)))) ^ (CONST_BV_S32_Vffffffff)))) + (CONST_BV_S33_V1)) + (Concat((CONST_BV_S1_V0), (Extract (31, 0, ((R2)))))))))) == (CONST_BV_S1_V1)),(CONST_BV_S9_V0),(CONST_BV_S9_Vff))))))) == (CONST_BV_S1_V1)) proverUtils.prove( PK_CF == PS_CF ) PK_OF = ((If (( (And( ( ( (CONST_BV_S1_V1) ^ Extract( R1.size() - 32 - 1, R1.size() - 33, R1 ) ) == Extract( R2.size() - 32 - 1, R2.size() - 33, R2 ) ) , (Not ( ( ( (CONST_BV_S1_V1) ^ Extract( R1.size() - 32 - 1, R1.size() - 33, R1 ) ) == Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 2, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) )) )) ) , ( (CONST_BV_S1_V1) ) , ( (CONST_BV_S1_V0) ) )) ) == ONE1 PS_OF = (And(((((Extract (31, 31, ((R1)))) ^ (CONST_BV_S1_V1)) == (CONST_BV_S1_V1)) == ((Extract (31, 31, ((R2)))) == (CONST_BV_S1_V1))), (Not(((((Extract (31, 31, ((R1)))) ^ (CONST_BV_S1_V1)) == (CONST_BV_S1_V1)) == ((Extract (31, 31, ((((Concat((CONST_BV_S1_V0), ((Extract (31, 0, ((R1)))) ^ (CONST_BV_S32_Vffffffff)))) + (CONST_BV_S33_V1)) + (Concat((CONST_BV_S1_V0), (Extract (31, 0, ((R2)))))))))) == (CONST_BV_S1_V1))))))) proverUtils.prove( PK_OF == PS_OF ) PK_R2 = (Concat((CONST_BV_S32_V0), Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 33, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) ) PS_R2 = (Concat((CONST_BV_S32_V0), (Extract (31, 0, ((((Concat((CONST_BV_S1_V0), ((Extract (31, 0, ((R1)))) ^ (CONST_BV_S32_Vffffffff)))) + (CONST_BV_S33_V1)) + (Concat((CONST_BV_S1_V0), (Extract (31, 0, ((R2)))))))))))) proverUtils.prove( PK_R2 == PS_R2 ) PK_SF = (Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 2, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) ) == ONE1 PS_SF = ((Extract (31, 31, ((((Concat((CONST_BV_S1_V0), ((Extract (31, 0, ((R1)))) ^ (CONST_BV_S32_Vffffffff)))) + (CONST_BV_S33_V1)) + (Concat((CONST_BV_S1_V0), (Extract (31, 0, ((R2)))))))))) == (CONST_BV_S1_V1)) proverUtils.prove( PK_SF == PS_SF ) PK_ZF = ((If ((( Extract( ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 1 - 1, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ).size() - 33, ( ( Concat((CONST_BV_S1_V0), ( (CONST_BV_S32_VNEG1) ^ Extract( R1.size() - 32 - 1, R1.size() - 64, R1 ) ) ) + Concat((CONST_BV_S1_V0), Extract( R2.size() - 32 - 1, R2.size() - 64, R2 ) ) ) + (CONST_BV_S33_V1) ) ) == (CONST_BV_S32_V0) ) ) , ( (CONST_BV_S1_V1) ) , ( (CONST_BV_S1_V0) ) )) ) == ONE1 PS_ZF = ((Extract (31, 0, ((((Concat((CONST_BV_S1_V0), ((Extract (31, 0, ((R1)))) ^ (CONST_BV_S32_Vffffffff)))) + (CONST_BV_S33_V1)) + (Concat((CONST_BV_S1_V0), (Extract (31, 0, ((R2)))))))))) == (CONST_BV_S32_V0))
vfmadd132_double = Function('vfmadd132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfmadd132_single = Function('vfmadd132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfmsub132_double = Function('vfmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfmsub132_single = Function('vfmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmadd132_double = Function('vfnmadd132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmadd132_single = Function('vfnmadd132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmsub132_double = Function('vfnmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmsub132_single = Function('vfnmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) print('[6;30;44m' + 'Opcode:cltq' + '[0m') PK_RAX = (SignExt( 64 - (Extract(RAX.size() - 32 - 1, RAX.size() - 64, RAX)).size(), (Extract(RAX.size() - 32 - 1, RAX.size() - 64, RAX)))) PS_RAX = (SignExt(64 - (Extract(31, 0, ((RAX)))).size(), (Extract(31, 0, ((RAX)))))) proverUtils.prove(PK_RAX == PS_RAX)
BitVecSort(64)) # Uninterpreted ternary function declaration vfmadd132_double = Function('vfmadd132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfmadd132_single = Function('vfmadd132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfmsub132_double = Function('vfmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfmsub132_single = Function('vfmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmadd132_double = Function('vfnmadd132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmadd132_single = Function('vfnmadd132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmsub132_double = Function('vfnmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmsub132_single = Function('vfnmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) print('[6;30;44m' + 'Opcode:clc' + '[0m') CONST_BV_S1_V0 = BitVecVal(0, 1) PK_CF = ((CONST_BV_S1_V0)) == ONE1 PS_CF = (False) proverUtils.prove(PK_CF == PS_CF)
BitVecSort(32), BitVecSort(32)) vfmsub132_double = Function('vfmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfmsub132_single = Function('vfmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmadd132_double = Function('vfnmadd132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmadd132_single = Function('vfnmadd132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) vfnmsub132_double = Function('vfnmsub132_double', BitVecSort(64), BitVecSort(64), BitVecSort(64), BitVecSort(64)) vfnmsub132_single = Function('vfnmsub132_single', BitVecSort(32), BitVecSort(32), BitVecSort(32), BitVecSort(32)) print('[6;30;44m' + 'Opcode:cqto' + '[0m') CONST_BV_S1_V0 = BitVecVal(0x0, 1) CONST_BV_S57_V0 = BitVecVal(0x0, 57) CONST_BV_S8_V3f = BitVecVal(0x3f, 8) PK_RDX = (( SignExt(64 - (RAX).size(), (RAX)) >> BitVecVal(63, SignExt(64 - (RAX).size(), (RAX)).size()))) PS_RDX = (Extract(64, 1, (((Concat((RAX), (CONST_BV_S1_V0))) >> (Concat( (CONST_BV_S57_V0), (CONST_BV_S8_V3f))))))) proverUtils.prove(PK_RDX == PS_RDX)