blob: 7f9d8c88e1d71d72aa30c109d22abae0109ea5af [file] [log] [blame]
#include <stdint.h>
#include <stdio.h>
#include <string.h>
void
test(int64_t op1_init, int64_t op2_init, int64_t op3_init)
{
register int64_t op1 asm("8") = op1_init;
register int64_t op3 asm("9") = op3_init;
int64_t op2 = op2_init;
int cc = 1;
__asm__ volatile (
"csg 8,9,%1\n\t"
"ipm %0\n\t"
"srl %0,28\n\t"
: "=d" (cc), "+Q" (op2), "+d"(op1), "+d"(op3)
:
: "cc");
}
int main ()
{
int64_t op1, op2, op3;
test(op1, 0x1000000000000000ull, 0x1234567887654321ull); // complaint
test(0x1000000000000000ull, op2, 0x1234567887654321ull); // complaint
test(0x1000000000000000ull, 0x1000000000000000ull, op3); // no complaint
return 0;
}