1*9880d681SAndroid Build Coastguard Worker; Test matching operands with the GPR constraint "r". 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -no-integrated-as | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @f1(i32 *%dst) { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 7*9880d681SAndroid Build Coastguard Worker; CHECK: lhi %r0, 100 8*9880d681SAndroid Build Coastguard Worker; CHECK: blah %r0 9*9880d681SAndroid Build Coastguard Worker; CHECK: st %r0, 0(%r2) 10*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 11*9880d681SAndroid Build Coastguard Worker %val = call i32 asm "blah $0", "=r,0" (i8 100) 12*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 *%dst 13*9880d681SAndroid Build Coastguard Worker ret void 14*9880d681SAndroid Build Coastguard Worker} 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerdefine void @f2(i32 *%dst) { 17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 18*9880d681SAndroid Build Coastguard Worker; CHECK: lhi %r0, 101 19*9880d681SAndroid Build Coastguard Worker; CHECK: blah %r0 20*9880d681SAndroid Build Coastguard Worker; CHECK: st %r0, 0(%r2) 21*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 22*9880d681SAndroid Build Coastguard Worker %val = call i32 asm "blah $0", "=r,0" (i16 101) 23*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 *%dst 24*9880d681SAndroid Build Coastguard Worker ret void 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerdefine void @f3(i32 *%dst) { 28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 29*9880d681SAndroid Build Coastguard Worker; CHECK: lhi %r0, 102 30*9880d681SAndroid Build Coastguard Worker; CHECK: blah %r0 31*9880d681SAndroid Build Coastguard Worker; CHECK: st %r0, 0(%r2) 32*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 33*9880d681SAndroid Build Coastguard Worker %val = call i32 asm "blah $0", "=r,0" (i32 102) 34*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 *%dst 35*9880d681SAndroid Build Coastguard Worker ret void 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; FIXME: this uses "lhi %r0, 103", but should use "lghi %r0, 103". 39*9880d681SAndroid Build Coastguard Workerdefine void @f4(i32 *%dst) { 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4: 41*9880d681SAndroid Build Coastguard Worker; CHECK: blah %r0 42*9880d681SAndroid Build Coastguard Worker; CHECK: st %r0, 0(%r2) 43*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 44*9880d681SAndroid Build Coastguard Worker %val = call i32 asm "blah $0", "=r,0" (i64 103) 45*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 *%dst 46*9880d681SAndroid Build Coastguard Worker ret void 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdefine i64 @f5() { 50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f5: 51*9880d681SAndroid Build Coastguard Worker; CHECK: lghi %r2, 104 52*9880d681SAndroid Build Coastguard Worker; CHECK: blah %r2 53*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 54*9880d681SAndroid Build Coastguard Worker %val = call i64 asm "blah $0", "=r,0" (i8 104) 55*9880d681SAndroid Build Coastguard Worker ret i64 %val 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine i64 @f6() { 59*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f6: 60*9880d681SAndroid Build Coastguard Worker; CHECK: lghi %r2, 105 61*9880d681SAndroid Build Coastguard Worker; CHECK: blah %r2 62*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 63*9880d681SAndroid Build Coastguard Worker %val = call i64 asm "blah $0", "=r,0" (i16 105) 64*9880d681SAndroid Build Coastguard Worker ret i64 %val 65*9880d681SAndroid Build Coastguard Worker} 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Workerdefine i64 @f7() { 68*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f7: 69*9880d681SAndroid Build Coastguard Worker; CHECK: lghi %r2, 106 70*9880d681SAndroid Build Coastguard Worker; CHECK: blah %r2 71*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 72*9880d681SAndroid Build Coastguard Worker %val = call i64 asm "blah $0", "=r,0" (i32 106) 73*9880d681SAndroid Build Coastguard Worker ret i64 %val 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workerdefine i64 @f8() { 77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f8: 78*9880d681SAndroid Build Coastguard Worker; CHECK: lghi %r2, 107 79*9880d681SAndroid Build Coastguard Worker; CHECK: blah %r2 80*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14 81*9880d681SAndroid Build Coastguard Worker %val = call i64 asm "blah $0", "=r,0" (i64 107) 82*9880d681SAndroid Build Coastguard Worker ret i64 %val 83*9880d681SAndroid Build Coastguard Worker} 84