1#include <stdint.h> 2#include <stdio.h> 3#include <string.h> 4 5void 6test(int64_t op1_init, int64_t op2_init, int64_t op3_init) 7{ 8 register int64_t op1 asm("8") = op1_init; 9 register int64_t op3 asm("9") = op3_init; 10 11 int64_t op2 = op2_init; 12 int cc = 1; 13 14 __asm__ volatile ( 15 "csg 8,9,%1\n\t" 16 "ipm %0\n\t" 17 "srl %0,28\n\t" 18 : "=d" (cc), "+Q" (op2), "+d"(op1), "+d"(op3) 19 : 20 : "cc"); 21} 22 23int main () 24{ 25 int64_t op1, op2, op3; 26 27 test(op1, 0x1000000000000000ull, 0x1234567887654321ull); // complaint 28 test(0x1000000000000000ull, op2, 0x1234567887654321ull); // complaint 29 test(0x1000000000000000ull, 0x1000000000000000ull, op3); // no complaint 30 31 return 0; 32} 33