10bb707e1126baccfdce980a6d2a92d57e9aff550florian#include <stdint.h> 20bb707e1126baccfdce980a6d2a92d57e9aff550florian#include <stdio.h> 30bb707e1126baccfdce980a6d2a92d57e9aff550florian#include <string.h> 40bb707e1126baccfdce980a6d2a92d57e9aff550florian 50bb707e1126baccfdce980a6d2a92d57e9aff550florianvoid 60bb707e1126baccfdce980a6d2a92d57e9aff550floriantest(int64_t op1_init, int64_t op2_init, int64_t op3_init) 70bb707e1126baccfdce980a6d2a92d57e9aff550florian{ 80bb707e1126baccfdce980a6d2a92d57e9aff550florian register int64_t op1 asm("8") = op1_init; 90bb707e1126baccfdce980a6d2a92d57e9aff550florian register int64_t op3 asm("9") = op3_init; 100bb707e1126baccfdce980a6d2a92d57e9aff550florian 110bb707e1126baccfdce980a6d2a92d57e9aff550florian int64_t op2 = op2_init; 120bb707e1126baccfdce980a6d2a92d57e9aff550florian int cc = 1; 130bb707e1126baccfdce980a6d2a92d57e9aff550florian 140bb707e1126baccfdce980a6d2a92d57e9aff550florian __asm__ volatile ( 150bb707e1126baccfdce980a6d2a92d57e9aff550florian "csg 8,9,%1\n\t" 160bb707e1126baccfdce980a6d2a92d57e9aff550florian "ipm %0\n\t" 170bb707e1126baccfdce980a6d2a92d57e9aff550florian "srl %0,28\n\t" 180bb707e1126baccfdce980a6d2a92d57e9aff550florian : "=d" (cc), "+Q" (op2), "+d"(op1), "+d"(op3) 190bb707e1126baccfdce980a6d2a92d57e9aff550florian : 200bb707e1126baccfdce980a6d2a92d57e9aff550florian : "cc"); 210bb707e1126baccfdce980a6d2a92d57e9aff550florian} 220bb707e1126baccfdce980a6d2a92d57e9aff550florian 230bb707e1126baccfdce980a6d2a92d57e9aff550florianint main () 240bb707e1126baccfdce980a6d2a92d57e9aff550florian{ 250bb707e1126baccfdce980a6d2a92d57e9aff550florian int64_t op1, op2, op3; 260bb707e1126baccfdce980a6d2a92d57e9aff550florian 270bb707e1126baccfdce980a6d2a92d57e9aff550florian test(op1, 0x1000000000000000ull, 0x1234567887654321ull); // complaint 280bb707e1126baccfdce980a6d2a92d57e9aff550florian test(0x1000000000000000ull, op2, 0x1234567887654321ull); // complaint 290bb707e1126baccfdce980a6d2a92d57e9aff550florian test(0x1000000000000000ull, 0x1000000000000000ull, op3); // no complaint 300bb707e1126baccfdce980a6d2a92d57e9aff550florian 310bb707e1126baccfdce980a6d2a92d57e9aff550florian return 0; 320bb707e1126baccfdce980a6d2a92d57e9aff550florian} 33